17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?