私は基本的なRailsアプリケーションをテストしていますが、コントローラスクリプトにrequire()されているライブラリスクリプトにいくつかの望ましくないキャッシュ動作が発生しているようです。RubyやRailsのキャッシュにはrequire()されたスクリプトがキャッシュされていますか?
と仮定FooController.rb
には、次のものが含まれています
require 'utils' # a library script
class FooController
def some_action
@some_member = do_something() # global method defined in utils.rb
end
end
私がRailsのサーバーを再起動するまでutils.rb
への変更が有効にならないことが表示されます。私はこれがRailsのクラスキャッシングの設定ミスに起因するとは思わない、a)私は "開発"環境で走っている、b)コントローラコードを直接変更することができる(例えば、上記のsome_action
メソッドへ)がスクリプトの次の実行時に反映されます。私はputs
へのいくつかの呼び出しでこれをテストしており、コンソールにスパムメッセージを送ります。
require()スクリプトがキャッシュされたままになるようなRubyやRailsの動作はありますか?もしそうなら、その動作を設定する方法はありますか?
これはhttp://stackoverflow.com/questions/3282655/ruby-on-rails-3-reload-lib-directory-for-each-requestと他の非常によく似たいくつかの質問のほぼ同じように見えます。これはエンジンに関するものですが、どちらも '/ lib'で自動的にファイルを読み込んでいます。 – Emily