/lib
Geliştirme sırasında dizinimdeki kodu otomatik olarak yüklemek için bir başlatıcıda aşağıdaki satırı kullanıyorum :
config / ilklendiriciler / custom.rb:
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
( Rails 3 Quicktip'ten: Geliştirme modunda lib klasörlerini otomatik olarak yeniden yükle )
Harika çalışıyor, ancak üretimde kullanmak için çok verimsiz - Her istek üzerine libs yüklemek yerine, sadece başlangıçta bunları yüklemek istiyorum. Aynı blogda bunun nasıl yapılacağını açıklayan başka bir makale var :
config / application.rb:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
Ancak, buna geçiş yaptığımda, geliştirme aşamasında bile, lib fonksiyonlarını kullanmaya çalışırken NoMethodErrors alıyorum.
Lib dosyalarımdan birine örnek:
lib / extensions.rb:
Time.class_eval do
def self.milli_stamp
Time.now.strftime('%Y%m%d%H%M%S%L').to_i
end
end
Arayan Time.milli_stamp
NoMethodError atacağım
Başkalarının SO ile ilgili benzer soruları yanıtladığını fark ettim ama hepsi daha önce endişelenmem gereken adlandırma kuralları ve diğer konularla ilgileniyor gibi görünüyor - Lib derslerim zaten istek başına yükleme için çalıştı , sadece değiştirmek istiyorum per- için başlangıç yükleme. Bunu yapmanın doğru yolu nedir?