Note

3年後の自分のために書いています

Rails

Rails の API モードで CSRF 対策機能を実装する

半年前に会社の技術ブログの下書きに雑に書いてて公開しどきを忘れたやつ、もったいないのでこちらで公開。 Rails の API モードはデフォルトでは CSRF 対策機能が有効になってないので、クッキーによるセッション機能を使うと脆弱性を生む可能性がある。 Ra…

sinatraとrailsとrfcとmdnと徳丸本から学ぶセッションとクッキーと認証とCSRFとXSS

半年前の下書き、めっちゃ途中だけど埋もれるのも嫌なので公開。(あとから追記していく) 元々 csrf についての記事を書こうと思っていたが、csrf について調べるうちセッションとクッキーのことが気になり、rails のセッションとクッキーの実装方法が気に…

rails stats コマンドで app 以下のディレクリを全て計測できるようにする

$ rails stats コマンドはデフォルトでは以下のディレクトリしか計測しないため、サービスクラスを app/services 以下に置いているような場合、その分は計測されない。 app/controllers app/helpers app/jobs app/models app/mailers app/mailboxes app/chan…

Rails の API モードで静的ファイルをホスティングする

環境 ruby 2.7.1 rails 5.1.2, 6.0.3 の両方 結論 以下、二つの方法がある。 config.public_file_server.enabled を true にして public ディレクトリ以下に置く 静的な HTML ファイルを表示させたいだけなら config.public_file_server.enabled を true に…

Rails の API モードでセッションを有効にする

巷には config/application.rb 内で Rails.app_class.config.api_only = false にすればできる、的な記事が溢れているが、不要な middleware まで読み込みたくない。 環境 ruby 2.7.1 rails 6.0.3 差分 デフォルトの CookieStore を使う場合 diff --git a/co…

ActiveRecord で create_xx, build_xx 系のメソッドが作られるのは has_one した時だけ

表題の通りですが、 has_many した時も create_xxs 的なメソッドが自動生成されると勘違いしていたのでメモ。 ActiveRecord::Associations::ClassMethods class Project < ActiveRecord::Base has_one :project_manager has_many :milestones end Project#cr…

rails, rack, unicorn or puma, nginx の関係についてちゃんと理解したい

だいぶメモ書きです。 表題の件、まだ曖昧にしか理解できてない。 ググっても浅い情報しか出てこないし、各ライブラリのソースコードを読んでみたけどどう繋がってるか、それぞれどんな役割を担っているか把握するのムズいなぁ…。 結論 色々調べてここまで分…

【Rails 5.2 版】スマートな rails new コマンドの叩き方

自分はいつもプライベートの開発ではこんな感じで rails new やってます、というのを備忘録もかねて載せておきます。 基本的に使うか分からないライブラリのファイルは生成しないようにしています。後から genarate コマンドで簡単に追加できるので。 通常の…

ActiveRecord の `#all`, `#find_each`, `#find_in_batches`, `#in_batches` の違いについて

表題の件、ずっと曖昧に理解していた。 1.2 複数のオブジェクトをバッチで取り出す - Active Record クエリインターフェイス - Rails ガイド Rails のコードも読みながら ↑ の内容にプラスα してまとめる。 結論 処理するレコードが 1000 件以下なら何使って…

Rails で静的なトップページをいい感じにルーティングしたい

例えば静的なトップページを作りたくて GET /welcome に welcome#hoge(不自然じゃないアクション) を対応づけたいとする。 Rails っぽくリソースベースな感じで書きたいなと思ったが、単数形リソースを使って以下のようにやってもうまくいかない。 Rails.app…

Rails でモデルを generate する時に migration ファイルを作らない方法

ridgepole とか使ってると、 $ rails g model Hoge した時に migration ファイルは作って欲しくない。 $ rails g model Hoge --no-migration で、いけました。 おまけ コマンドラインツールのオプションについては Rails ガイド よりも -h で調べた方がたく…