application.rbには、
config.autoload_paths += %W(#{config.root}/lib
そのため、lib の下のクラスを変更すると、コードがリロードされます。
しかし、config/initializers を autoload に追加しようとすると、コードが更新されないことに気付きました。
文字列クラスの拡張機能を作成している場合、コードを変更するたびに Rails を再起動する必要があります。
お知らせ下さい?
application.rbには、
config.autoload_paths += %W(#{config.root}/lib
そのため、lib の下のクラスを変更すると、コードがリロードされます。
しかし、config/initializers を autoload に追加しようとすると、コードが更新されないことに気付きました。
文字列クラスの拡張機能を作成している場合、コードを変更するたびに Rails を再起動する必要があります。
お知らせ下さい?
初期化子は、レールの開始時にのみロードされます (再ロードされることはありません)。いじくり回すときconfig/initializers
は、毎回レールを再起動する必要があります。
もちろん、コードが定義され/lib
ていることを確認して、テスト スイートを使用して動作することを確認することもできます。
たとえば、lib/speaker.rb
書き込み中
module Speaker
def speak
puts "Ahum, listen: #{self.to_s}"
end
end
そして、イニシャライザで次のようなことができます
class String
include Speaker
end
これはレールの起動時にのみロードされますが、モジュールをより簡単に開発およびテストできます。
お役に立てれば。
初期化ファイルは、レール サーバーの起動時に 1 回だけ読み込まれます。初期化子の値が変更されたときにサーバーを再起動します。詳細については、Rails初期化ガイドを参照してください。
変更時の「lib」の自動リロード
lib ファイルを自動リロードできます。Link Autoload に従って、変更時に lib ディレクトリをリロードします
Rails アプリケーションの構成:config.reload_classes_only_on_change
追跡されたファイルが変更された場合にのみ、クラスのリロードを有効または無効にします。デフォルトでは、オートロード パス上のすべてを追跡し、true に設定されています。が true の場合config.cache_classes
、このオプションは無視されます。