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

  • Android Central

    Android Cent

    13 Kasım 2008
  • Professor Messer

    Professor Me

    27 NİSAN 2007
  • TantalizingTrance

    TantalizingT

    15 ŞUBAT 2009