SORU
30 EYLÜL 2013, PAZARTESİ


Otomatik yükleme Raylar lib dosyaları 4

Geliştirme sırasında /lib benim dizininde kod otomatik yüklenmesini bir başlatıcı aşağıdaki satırı kullanın:

config//özel başlatıcılar.rb:

RELOAD_LIBS = Dir[Rails.root   'lib/**/*.rb'] if Rails.env.development?

(Rails 3 Quicktip: Auto reload lib folders in development mode)

Harika çalışıyor, ama çok verimsiz üretim - her isteği libs yüklemek Yerine, sadece üzerine onları yüklemek istiyorum. Aynı blog another article bunu nasıl tarif etti:

application/config.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/**/"]

Bu geçiş, ancak, hatta geliştirme, lib işlevleri kullanmayı denerken NoMethodErrors.

Lib dosyaları bir örnek:

/lib uzantıları.rb:

Time.class_eval do
  def self.milli_stamp
    Time.now.strftime('%Y%m%d%H%M%S%L').to_i
  end
end

Time.milli_stamp arama NoMethodError atmak olacaktır

Diğerleri ÇOK benzer sorulara cevap olduğunun farkındayım ama hepsi önce - lib derslerim zaten endişe etmedim bu sözleşmeler ve diğer konuları adlandırma ile anlaşma gibi görünüyorçalıştıher istek yükleniyor, ben sadece bunu değiştirmek istiyor başınabaşlangıçyükleniyor. Bunu yapmak için doğru yolu nedir?

CEVAP
29 EKİM 2013, Salı


Bu sorunu çözebilir bence

  1. application/config.rb:

    config.autoload_paths << Rails.root.join('lib')
    

    ve doğru adlandırma edinlib.

    /foo lib.rb:

    class Foo
    end
    

    /foo/bar lib.rb:

    class Foo::Bar
    end
    
  2. Eğer gerçekten gibi dosyasındaki bazı maymun yamalar/lib uzantıları.rbolabilir elle gerektirir:

    config//başlatıcılar gerektirir.rb:

    require "#{Rails.root}/lib/extensions" 
    

S. S.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008
  • MrMimoB

    MrMimoB

    11 NİSAN 2011
  • Professor Messer

    Professor Me

    27 NİSAN 2007