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

  • kremosakhaz

    kremosakhaz

    25 AĞUSTOS 2006
  • Machinima

    Machinima

    17 Ocak 2006
  • RealPapaPit

    RealPapaPit

    16 Mart 2009