Ruby on Rails 3 - her istek için Yeniden lib dizini
Raylar 3 uygulaması için yeni bir motor yaratıyorum. Tahmin edebileceğiniz gibi, bu motor benim uygulama lib dizininde.
Ancak, bazı sorunlar gelişiyor. Gerçekten de, benim sunucu bir şey değiştirmek her zaman yeniden başlatmak için motor ihtiyacım var.
Bunu önlemek için bir yolu var mı ?
Raylar tamamen lib dizin veya belirli bir dosya ve her istek için onun gereksinimlerini yeniden yüklemek için zorlayabilir miyim ?
Yardımınız için teşekkürler
CEVAP
Raylar kodu biraz araştırdım ve bu çıktı yani yukarıda benimle çalışmak için alamadım:
Yeni dosya: config/başlatıcılar/reload_lib.rb
if Rails.env == "development"
lib_reloader = ActiveSupport::FileUpdateChecker.new(Dir["lib/**/*"]) do
Rails.application.reload_routes! # or do something better here
end
ActionDispatch::Callbacks.to_prepare do
lib_reloader.execute_if_updated
end
end
Evet, iğrenç, biliyorum ama hack. Tam bir yeniden tetiklemek için daha iyi bir yolu olabilir, ama bu benim için çalışıyor. Özel kullanım benim durumumda gelişme uğraştım olarak yeniden ihtiyacım vardı bu yüzden bir Raf uygulaması Raylar bir güzergah monte edildi.
Yok aslında /lib tüm dosyaları son yüklenen bu yana değişen (değiştirilen zaman damgası) ve daha sonra eğer değiştirirlerse yeniden tetikler varsa denetler.
Ayrıca bu benim config/uygulama var belirtmeliyim.rb
config.autoload_paths = %W(#{config.root}/lib)
config.autoload_paths = Dir["#{config.root}/lib/**/"]
Sadece varsayılan olarak lib dizini içinde her şey yüklü alır emin kılar.
Yays!
Temizleme veya Ruby on Rails bir verit...
Nasıl Karma bir anahtarı kaldırın ve R...
.debug yönlendirme kök dizini için URL...
Ruby/Rails: bir UNİX zaman damgası içi...
Global sabitleri tanımlamak için Nered...