Rails

ActiveRecordへのattributeの代入時に何が起こっているか

ActiveRecordを継承したモデルへのattributeの代入時の挙動について。 通常の attribute activerecord/attribute_methods/write.rb 内で #{attribute_name}= メソッドを動的に定義している。 その中で @attributes<ActiveRecord::AttributeSet> (ハッシュ的なもの)に対して attribute_n</activerecord::attributeset>…

devise_for

Deviseを使うとき、 routes.rbに書く devise_for が何をやっているか。 devse_for? devise/rails/routes.rb の devise_for のコメント欄のところ # Includes devise_for method for routes. This method is responsible to # generate all needed routes for…

Sidekiqの仕組み

Railsのジョブキューのgemで有名なSidekiq。 どのように動いているかよくわかっていないので調べてみた。 エンキュー ActibeJob.perform_later キューに入れたい処理はActiveJob::Baseを拡張したクラスのperformメソッドに実装し、 perform_laterを呼び出す…

Model周り - helpy code reading

共通部分を切り出す CakePHPでいうBehaviorやComponent, Helper Rails 共通部分を切り出す (View, Controller, Model) メモ - Qiita 関連したモデルのフォームでの扱い Rails ネストした関連先のテーブルもまとめて保存する (accepts_nested_attributes_for…

ログイン後の初期設定 - helpy code reading

github.com 初期ログイン後に表示される初期設定画面周りのコードを見ていく。 流れ ログイン後のリダイレクト admin's root admin/dashboard#index to admin/topics#index def index #@topics = Topic.mine(current_user.id).pending.page params[:page] if…

ActionController#respond_to - code reading

requestのMIME TYPEに応じたレスポンスを定義する機能 定義は rails/mime_responds.rb at 48f140cf7459c963a54637c897448b959dbbfd26 · rails/rails · GitHub ActionController:: MimeResponds#respond_to def respond_to(*mimes) raise ArgumentError, "res…

extends core Date - Rails code reading

activesupport/lib/active_support/core_ext/date/conversions.rb to_sで指定できるフォーマットを拡張している。 一番上に対応するフォーマットが定義されている。 class Date DATE_FORMATS = { :short => '%d %b', :long => '%B %d, %Y', :db => '%Y-%m-%d…

ActionDispatch::Http::UploadedFileのコードリーデイング

概要 ActionDispatch::Http moduleに class UploadedFile が定義されている。 サーバーにアップロードされたtime fileを扱うクラス。 pickup initialize以外の処理は@tempfileに対するショートカット。 initializeでは、ファイルの有無チェックとファイル名…

ActionDispatch::Http::URLのコードリーディング

概要 ActionDispatch::Http::URLモジュールに諸々追加している。 pickup class << self でクラスメソッドをまとめて定義している。 hostからドメインを取得する。 Array#last は要素数を指定できる。 def extract_domain_from(host, tld_length) host.split(…

ActionDispatch::Http::Headers のコードリーディング

なぜ? CakePHPを長く使っていて、Railsを趣味でちょいちょい触ってみている状態で、 その差として思いつくのが、 標準のコンポーネント、機能の知識 有用なプラグイン知識 言語自体の経験 この標準機能の知識と言語の慣れを埋めるために、railsのコードを読…