app/services
'da, Notification::Finder
ve Notification::Builder
gibi bazı sınıflarım var.autoload_paths ad alanının farkında değil misiniz?
app/services/notification/builder.rb
ve app/services/notification/finder.rb
olarak yerleştirilirler. Ben Finder
yüklemeye çalıştığınızda app/models/notification.rb
autoload_path bir model olarak Notification
sınıf da vardır
, config.autoload_paths += %W(#{config.root}/app/services)
gibi yapılandırılmışsa, çalışır:
Loading development environment (Rails 3.2.9)
[1] pry(main)> Notification::Finder
=> Notification::Finder
Ama ne zaman Builder
'u deniyorum, otomatik yükleme yapan raylarla ilgili bir sorun yaşıyorum:
Loading development environment (Rails 3.2.9)
[1] pry(main)> Notification::Builder
=> ActiveRecord::Associations::Builder
Yalnızca sabit ad (Oluşturucu) zaten diğer ad alanı tarafından tanımlandığında kullanmış olduğum ad alanını yoksayar ve ActiveRecord::Associations::Builder
alır.
Bu beklenen davranış mı, yoksa raylar mı? Daha ayrıntılı gidiş
, activesupport/dependencies.rb
de const_missing
yöntem const_name 'Builder'
ve nesting.inspect => 'nil'
alır.
Meraklı Ben constantize kullandığınızda, beklendiği gibi gideren:
Loading development environment (Rails 3.2.9)
[1] pry(main)> 'Notification::Builder'.constantize
=> Notification::Builder
(Raylar sorunu github at: https://github.com/rails/rails/issues/8726)
'Builder' ayrılmış bir isim midir? – tadman
@tadman değil =/ –
yeni bir uygulamada çoğaltabilir misiniz? Eğer öyleyse, lütfen bir tane github'a koyun ve bana haber verin. Bir bakacağım. Rayların otomatik yükleyicinin doğru sonucu veremeyeceği durumlar vardır. Sanırım bu mümkün olsa da ... –