Modele dahil ettiğim bir modülü ad alanı oluşturmakta sorun yaşıyorum. /lib/search/car.rb /config/application.rbAd alanlı modüller ve Raylar 3.1.3 autoload_path
config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.autoload_paths += Dir["#{config.root}/lib/search/*"]
içinde
module Search
module Car
include ActiveSupport::Concern
# methods in here
end
end
içinde /app/models/car.rb
class Car
include Search::Car
end
içinde
Garip olan şey, sunucuyu açtığımda doğrudan bir hata almama. Bir süre sonra tarayıcıyı yenileyin eğer Ama bu hatayı alıyorum:
Expected #{Rails.root}/lib/search/car.rb to define Car
problemin doğası ile ilgili bir şey olduğunu gösterir:
/config/environments/development.rb
ISearch
yeri tanımlayan Ayrıca güvenilir
config.cache_classes = false
/lib
doğrudan bir dosya search.rb
koyun:
module Search
# Put shared methods here
end
Neyi yanlış yapıyorum?
GÜNCELLEME:
Tamam, adlandırmak eğer Search::Car
Search::CarSearch
için çalıştığını çıkıyor. Farklı bir kapsamda aynı ada sahip Modül/Sınıflara sahip olmak mümkün değil mi?
farklı kapsamlarda aynı adı taşıyan Modüller/Sınıfları olabilir, ama o zaman modül Araba yöntemleri kullanırken:
Bu çizgiyi (sadece lib dizini için AutoLoad olmalıdır) kaldırmalısınız belirsizliği kaldırmak için kapsamı belirtmelisiniz. –
Hey, yorumunuz için teşekkürler. Ben de öyle düşündüm ama işe yaramıyor. Herhangi bir fikri neden hata alıyorum? – Yeggeps