假设我动态创建一个模块:
app = Object.const_set('CoolModule', Module.new)
有没有向该模块添加一个类?这样的事可能吗?
app << (class Application; end)
我基本上试图让以下内容
module 'CoolModule'.turnThisIntoAModule
class Application < Rails::Application
config.blabla = 2
end
end
答案 0 :(得分:2)
你只需重复同样的事情。
CoolModule.const_set("SomeVeryDynamicName", Module.new do
class Application < Rails::Application
config.blabla = 2
end
end)
答案 1 :(得分:1)
您可以为动态命名的模块添加一个类,如下例所示:
app = Object.const_set('CoolModule', Module.new)
Object.const_get('CoolModule').
const_set('Application', Class.new(Rails::Application) do
config.blabla = 2
end)
如果您可以在通话点访问app
对象,那么它当然可以替换Object.const_get('CoolModule')
表达式。
Module.module_eval
建议自己,但遗憾的是它不会以块形式进行范围查找。它在字符串参数形式中执行,但我不鼓励在字符串上使用evals。