→Ruby on Rails RubyによるWebアプリケーションフレームワーク RoR
Agile Web Development with Rails
10分で作るRailsアプリ for Windows http://masuidrive.jp/rails/
Ruby on Rails公式サイトの採用サイト紹介ページ http://wiki.rubyonrails.org/rails/pages/RealWorldUsage
近年、サブスクのサービスが増えましたね。 今回はユーザーの上位プランをサブスクで決済できるようにしたいと思います。 プレミアム会員を月額100円で実装してみます! 下準備 Gemをインストールします。 Gemfile gem "stripe" Stripeのアカウントを作成します。 stripe.com 開発環境で動作確認するだけであれば、アカウントを作成するだけですぐに使えます! 環境変数を追加します。 https://dashboard.stripe.com/test/apikeys からAPIキーを持ってきます。 credentials に保存しましょう。 $ rails credent…
はじめに MySQL にてクエリを EXPLAIN すると Using temporary と Using filesort が同時に表示されることがある 調べてみるとこの2つが表示されたらクエリ改善が必須と出てくるが、そもそもなぜ表示されるのか?どういう時に表示されるのか? 今回はこちらについて調査した 先に結論 Using temporary と Using filesort は内部表でソートをした場合に表示され、インデックスを用いた改善は難しい 駆動表を使ったソートで Using filesort が表示された場合はインデックスで改善できる可能性がある 内容 Using temporar…
はじめに 下記のようなアソシエーション、スコープ、メソッドを持った Rails アプリケーションがあったとする class Question < ApplicationRecord has_many :answers has_many :popular_answers, -> { popular }, class_name: 'Answer' has_one :best_answer scope :published, -> { where(is_published: true) } def has_best_answer? BestAnswer.exists?(question_id: id…
こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 さて、Railsエンジニアの皆さんは非同期処理にどのようなライブラリを利用していますか? ちなみに弊社では Sidekiq を利用するプロジェクトが多いです。 tech.medpeer.co.jp 今回はRailsでの非同期処理ライブラリの新たな選択肢として誕生した「SolidQueue」について解説します。 github.com 目次 🙋 はじめに 🙋 📝 SolidQueueとは 📝 🚀 SolidQueueの特徴 🚀 🔓 「FOR UPDATE SKIP LOCKED」 とは 🔓 🍡 3種類のアクターについて 🍡…
最近はRBSが浸透しつつつあり、私もSteepを使った開発を行うことが増えてきています。 今回はそういったユースケースでrbs-inlineで定義を生成している場合にファイルに変更があったら自動で更新するような仕組みについての紹介です。 TL;DR rbs-inline推奨のfswatchで問題が発生しないならこの記事を読む必要はない Docker on WSLの環境でfswatch方式では意図しない動作が発生し利用が難しい chokidarを利用して自作 rbs-inlineのオススメの方法 rbs-inlineでも自動生成する方法について書いてあり、fswatch`を使うのが良いとされてい…
未来の自分用のメモです。 ベースイメージが存在していないToyアプリなどで利用することが多いDockerfileについて紹介します。 Railsで動作させることが前提ですが、空行で表現しているグループごとに説明します。 Localeの設定 設定しないとrails consoleなどでマルチバイト文字でエラー出がち Timezoneの設定 設定してもしなくてもOK 各種パッケージのインストール Rubyのビルドや利用したいDBのパッケージなどをインストール 場合によってはツールなどもインストールしても良いかもしれない UserやWorkdirの設定 移行のRUNがzshで動作することが前提になっ…
ある機能の再構築に合わせて、サービスを3分割することになりました。 システムの規模がそれほど大きくないので、全体の依存関係の調査は省略して、サクサク進めます。 1. CRUD図を作成 依存関係を調査しない代わりに作成しました。 「CRUD図」という言葉を聞きなれない方も多いみたいですが、行に機能、列にDBテーブルを書き、CREATE / READ / UPDATE / DELETEの有無を記載していきます。 Railsだとgemがないのがネックでした…。 誰か作って。 2. Contoroller、Worker、Scriptの各ファイルをどのサービスに持っていくか振り分け こちらはチームメンバ…
はじめに こんにちは、Tochiです。 多分世界のどこかにも僕のような間抜けがいると思うのでメモ程度に残しておきます。 起きたこと こんなクラスを作りました class Enquipment < ApplicationRecord # 略 end そしてrails consoleでModelを通じてデータを取得しようとしました $ Equipment.first => PG::UndefinedTable: ERROR: relation "equipment" does not exist (PG::UndefinedTable) 僕「え〜〜〜〜〜!!!なんで〜〜〜〜〜〜〜!?!?!?(間抜…
はじめに こんにちは、Tochiです。 第2章~第8章に引き続き、今日も読み進めていきます! 今日は第9章の「Better Together or Better Apart?」ついて考えていきたいと思います。 第2章まとめ 第3章まとめ 第4章まとめ 第5章まとめ 第6章まとめ 第7章まとめ 第8章まとめ https://amzn.asia/d/7tUC5KQ はじめに 感想 9章 9.2 インターフェースが簡潔になるなら、まとめるべき 9.3 重複をなくすためにまとめる 9.4 汎用コードと特定用途コードは分離する 9.5 9.6 9.7 分割と統合の方法 9.8 反対意見: Clean C…
Hotwireを使ってみる第三弾です! 今回はJSを使わずに、Hotwireで無限スクロールを実装してみます。 下準備 Gemをインストールする gem "kaminari" モデルを作る $ rails g model post 20240813000000_posts.rb class CreatePosts < ActiveRecord::Migration[7.1] def change create_table :posts do |t| t.string :name t.timestamps end end end 実装する ルーティングを設定する config/routes.rb…
イベント出店決定!むつさわワンちゃんマルシェ | moon desert 犬の洋服 https://ameblo.jp/karenmoko/entry-12864096342.html オリーブの森 | 道の駅むつざわ https://mutsuzawa-swt.jp/facility_oliveGoogleマップhttps://maps.app.goo.gl/gf4XFiM5EfKiKWEz6 むつさわドックラン ワンちゃんマルシェ 9月15日(日)10:00~16:00 ドックラン無料 入場無料 駐車場無料 小さなミニマルシェですが、 ドックラン常連さんや 遠くからもお客様来ていただき 毎…
毎週火曜日のラインナップがすごい(^^)名探偵ホームズ 原作:コナン・ドイル オリジナルアイデア:マルコ・パゴット シリーズ構成:山崎敬之、島崎真弓 監督:御厨恭輔、宮崎駿|アニメ|TOKYO MX https://s.mxtv.jp/anime/meitantei-holmes/グレートマジンガー【誕生50周年記念】|アニメ|TOKYO MX https://s.mxtv.jp/anime/great_mazin/アニメの神様『ドラゴンボールZ』|アニメ|TOKYO MX https://s.mxtv.jp/anime/dragonball_z/アニメの神様『機動戦士ガンダムSEED …
三井アウトレットパーク木更津に密着!ショッピングだけじゃないサービスも!▼藤井恵考案!秋の旬野菜さつまいもでごはん進むおかず&新発想ゆでない?ブロッコリーレシピ 9月10日 火曜 11:55 -13:55 日テレ1 毎日の生活をもっと明るく楽しく!便利な暮らしのワザから感動のドキュメントまで総力をあげて毎日絶賛取材中ナンデス!! 出演者【MC】南原清隆 【アシスタント】浦野モモ(日本テレビアナウンサー) 【出演者】いとうあさこ、佐藤栞里、八乙女光・有岡大貴(Hey!Say!JUMP)、長田庄平・松尾駿(チョコレートプラネット) 【VTRゲスト】寺田心、藤井恵、辻岡義堂(日本テレビアナウンサー)…
2024/09/09分のコミットです。 CHANGELOGへの追加はありませんでした。 remove blank line from the end of passwords_controller template to keep rubocop happy (#52833) railties/lib/rails/generators/rails/authentication/templates/controllers/passwords_controller.rbの修正です。 ファイル末尾の空行を削除しています。 Store session_id in cookies only once (…
9月7日に開催された福岡Rubyist会議04に参加してきました。 今回、Fukuoka.rbのメンバーとしてオーガナイザーの甚六さんにお声がけをいただき、Rails Girlsと自分とコミュニティというテーマで発表もしました。 当日の発表スライドはこちらです。 speakerdeck.com LT以外でこういった場で発表をするのは初めての経験で、準備含め簡単に振り返りたいと思います。 事前準備 発表内容はRails Girlsで経験したことを軸にまとめていくことだけは決まっていたのですが、20分間人前で話をした経験がなかったため、スライド作成の際にうまくまとめられなくなり、空中分解しかけまし…
始めに 外部キー制約があるレコードを削除するとき、参照元テーブルよりも参照先テーブルを先に削除する必要があります。 Railsの場合、次のようにdependentに定義しておくと、Parentテーブルを削除したタイミングでChildテーブルも削除されます。 class Parent < ApplicationRecord has_one :child, dependent: :destroy end class Child < ApplicationRecord belongs_to :parent end 今回の記事では、PythonのSQLModelを使用したときに、Parentテーブルを…
2024年9月20日(金) に品川で開催される Rubyセミナー 東京に登壇します。何気に東京でのオフライン登壇は、平成Ruby会議01でのキーノート以来4年10ヶ月ぶりのようです。 www.ruby.or.jp 日中の業務で使っている RuboCop についての視点を増やすための、業務としても参加しやすい感じの平日の午後開催です。対バンはまつもとゆきひろさんと神速さんで、私は RuboCop の話というオファーから『コミッター直伝 RuboCop実践ガイド』というタイトルで登壇します。 今回は RubyKaigi などで話す RuboCop 内部まで踏み込んだテックトークではなく、これから導…
2024/09/08分のコミットです。 CHANGELOGにのったコミットは以下の通りです。 actionpack/CHANGELOG.md Introduce safer, more explicit params handling method with params#expect such that params.expect(table: [ :attr ]) replaces params.require(:table).permit(:attr) Add Parameters#expect to safely filter and require params (#51674) A…
本記事では「Django公式チュートリアル」を終えた感想を書いていきます。 docs.djangoproject.com 良かったところ Django開発の基礎がざっくり理解できる 正直なところ、チュートリアルの内容は初学者にとって少し難易度が高いように感じました。私の場合、2周くらいやってようやくDjangoというフレームワークの概要をつかめた気がします。 チュートリアルを通して学べることを下記に挙げてみました。Django開発の基礎はしっかり詰まっているのですが、各章に専門用語が多いため、ドキュメント内を参照しながら進める必要があるかと思います。 チュートリアルを通して学べること プロジェ…
はじめに ここ数年の自分の経歴を振り返りつつ、50歳を超えて改めて自分のキャリアを考えてみたいなぁと思います 45歳〜50歳くらいまでやっていたことを振り返る 項目 内容 関わっていた業界 ・飲食系サービス(モバイルオーダー。BtoC)・交通系サービス(デジタル乗車券。BtoBtoC)・オンライン診療(小児科。BtoC) チーム規模 ・基本的に7〜10名前後(2チーム)・1年弱だけど0→1のサービスやったのでそれは基本1人 仕事の進め方など ・基本的にはおおまかな企画の方向性を共有してもらったうえで、仕様調整しながら機能開発・後述する技術要素を満遍なく使った開発。(特にバックエンド/フロントエ…
2024/09/07分のコミットです。 CHANGELOGにのったコミットは以下の通りです。 actionpack/CHANGELOG.md System Testing: Disable Chrome's search engine choice by default in system tests. activerecord/CHANGELOG.md Drop MySQL 5.5 support Deprecate unsigned_float and unsigned_decimal short-hand column methods. Use implication for skip_…
はじめに RailsアプリをECS上で動かす必要性があり、ちょっとやろうとしたところ地味にハマったので何回かに渡って実装してみます。 Railsは7.1から本番環境用のDockerfileなどを生成してくれます。 railsguides.jp ただ、開発環境をコンテナ上で行いたい場合は自分で整備する必要があります。今回はその方法を記します。 初期ファイルの作成 まずはDockerfile.devを作成します。Dockerfileはrails new実行時に本番環境用のDockerfileとして使われるため、名前を変更してDockerfile.devとしておきます。データベースにPostgreS…
JavaScriptフレームワークを取り巻く状況は、常に変化を続けています。近年では、サーバーサイドレンダリング(SSR)とクライアントサイドレンダリング(CSR)のバランスは、重要な検討事項です。 ChatGPTのRemix採用 2024年9月、ChatGPTがNext.jsからRemixに移行したことが明らかになりました。この出来事は、Remixの母体であるReact Router系のコミュニティで大きな話題となり、移行の理由について様々な憶測を呼びました。 JavaScriptエキスパートのWes Bos氏(学習動画教材とかを作っている人)は、ChatGPTのフロントエンドのソースコード…
SQLパフォーマンス詳解があまりにも面白かったので、次はSQLパズルをやっていました。 kouyatakao.hatenablog.com が、これウェブ(特にRails)の世界だとあんまりこう...ピンと来ないというか。 SQLパズルで紹介されているような技術を使うと、多分DHHの引いたレールから外れちゃうんだろうなぁという所感が殆どでした。 という事で、途中までしか読んでないけど一旦こちらは修了。 今は並列で進めていた 問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本をやっています。 gihyo.jp