Ho seguente configurazione:Richiede la dipendenza per ottenere Rails sottoclassi
app/modelli/my_module/service.rb
module MyModule
class Service < ActiveRecord::Base
def self.types
self.subclasses
end
def self.raw_types
self.types.map { |c| c.name.split("::").last }
end
end
end
require_dependency "my_module/service/rack"
require_dependency "my_module/service/rails"
require_dependency "my_module/service/sinatra"
app/modelli/my_module/servizio/rack.rb:
module MyModule
class Service::Rack < Service
end
end
app/modelli/my_module/servizio/rails.rb:
module MyModule
class Service::Rails < Service
end
end
app/modelli/my_module/servizio/sinatra.rb:
module MyModule
class Service::Sinatra < Service
end
end
che funziona così, ma ora la mia domanda:
Perché devo aggiungere queste tre linee:
require_dependency "my_module/service/rack"
require_dependency "my_module/service/rails"
require_dependency "my_module/service/sinatra"
nel mio file service.rb?
Se non aggiungo le tre linee:
MyModule::Service.raw_types
=> []
Se aggiungo le tre linee:
MyModule::Service.raw_types
=> ["Rack", "Rails", "Sinatra"]
Anybody un'idea?
Btw: Io uso di Ruby 2.0.0-preview1, Rails 4.0.0.rc1 e creare un nuovo motore di Rails con
rails plugin new MyModule
fa MyModule :: Service.types lavoro? –
La domanda è: perché è necessario richiedere i file o perché l'array viene popolato? Quando si richiedono i file si aggiungono 3 classi che fanno parte del sottoclasse Service, quindi 'Service.subclasses' restituisce quelle 3 classi. – Kris
Idea: uno dei file di scimmia "sottoclasse" nella classe. – User