我有以下设置:
应用程序/模型/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/service/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 引擎
rails plugin new MyModule