我有以下設置:需要依賴讓Rails的子類
應用程序/模型/ 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"
應用程序/模型/ my_module /服務/ rack.rb:
module MyModule
class Service::Rack < Service
end
end
應用程序/模型/ my_module /服務/ rails.rb:
module MyModule
class Service::Rails < Service
end
end
應用程序/模型/ my_module /服務/ sinatra.rb:
module MyModule
class Service::Sinatra < Service
end
end
,到目前爲止的工作,但現在我的問題:
我爲什麼要添加這些三行:
require_dependency "my_module/service/rack"
require_dependency "my_module/service/rails"
require_dependency "my_module/service/sinatra"
我的service.rb文件?
如果我不加三條線:如果我添加了三行
MyModule::Service.raw_types
=> []
:
MyModule::Service.raw_types
=> ["Rack", "Rails", "Sinatra"]
任何人的想法?
順便說一句:我使用Ruby 2.0.0-preview1,Rails的4.0.0.rc1並創建
rails plugin new MyModule
不MyModule的:: Service.types工作? –
問題爲什麼必須要求文件或爲什麼數組被填充?當你需要這些文件時,你需要添加3個所有子類爲Service的類,因此'Service.subclasses'返回這3個類。 – Kris
想法:其中一個文件monkey-patches「子類」放入Class中。 – User