SORU
19 Temmuz 2010, PAZARTESİ


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
6 Aralık 2010, PAZARTESİ


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!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • JonnyEthco

    JonnyEthco

    5 EKİM 2006