【发布时间】:2012-09-11 14:41:00
【问题描述】:
在 Sinatra/Padrino 中,哪里是添加常量以供在路由内部使用的合理位置?
我正在使用 Padrino 挂载多个应用程序,因此我希望所有应用程序都可以使用常量。 (所有应用都继承自一个基类。)
我使用Sinatra.helpers 来添加在路由内部使用的方法。
我希望对常量采用类似的方法。
更新
这似乎是一个范围界定问题,但我不知道在这种情况下出了什么问题。
这是一个演示问题的精简 padrino 应用程序:
app.rb
class MyProject < Padrino::Application
register Padrino::Rendering
register Padrino::Mailer
register Padrino::Helpers
MY_CONST = 123
end
controllers.rb
MyProject.controller do
get "/" do
p self.class # => MyProject
p self.class.constants # => [:DATA_ATTRIBUTES, ... <snip>..., :MY_CONST, ... <snip>... ]
p MyProject::MY_CONST # => 123
p MY_CONST # => NameError - uninitialized constant MY_CONST
end
end
【问题讨论】:
-
你可以添加一个类常量,它们应该在任何地方都可用,就像类变量一样。
-
在应用程序类中?添加到扩展 Padrino::Application 的应用程序类的常量在路由中不可用。