LoginSignup
17
16

More than 5 years have passed since last update.

【Rails】initializersディレクトリに書いたコードが、開発環境でリセットされるときの解決法

Posted at
initializers/something.rb
Rails.application.config.to_prepare do
  #この中で、処理を書く
end

解説

to_prepare以下でコードを渡すと、 開発環境ではリクエストの度に実行され、 プロダクションでは最初のリクエスト時に実行されるそうです。

そもそも、なんで開発環境ではコードの変更が即反映されるの?

development.rbのcache_classesがfalseになっているから。
すると、 appディレクトリ以下のコードに関しては、リクエストの度にコードがloadされるそうです。

参考:http://humanwebdevelopment.com/rails-3-application-config-to_prepare-and-initializers/

背景

  • gemとして読まれているRails engineのモデルを、特定のアプリケーション内でのみ拡張したかった。
  • ロジックはmoduleに書いたが、どこでそれをモデルにincludeすれば良いのか 最初分からなかった。
  • initializers以下に ModelName.send(:include, ModuleName)で良いらしいが、それだと本記事のタイトルの現象になってしまった。
17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16