将全局变量放在Rails 3中的位置
我曾经使用我的Rails 2.3.8应用程序将Global变量放在environment.rb中,例如:
MAX_ALLOWD_ITEMS = 6
它似乎在Rails 3中不起作用。我尝试将它放在application.rb中并且没有帮助。
你有什么建议?
如果您已经尝试过像Ryan建议的那样重新启动服务器,请尝试将它放在您的application.rb
如下所示:
module MyAppName class Application < Rails::Application YOUR_GLOBAL_VAR = "test" end end
然后你可以在控制器,视图或任何地方使用命名空间调用它。
MyAppName::Application::YOUR_GLOBAL_VAR
另一种选择是使用settingslogic之类的东西。 使用settingslogic,您只需创建一个yml配置文件和一个指向配置文件的模型(Settings.rb)。 然后,您可以在rails应用中的任何位置访问这些设置:
Settings.my_setting
我通常使用application_helper.rb这是它的样子:
module ApplicationHelper def my_global_variable my_global_variable = "Helloworld!" end end
然后我可以将my_global_variable放在任何地方作为函数。
如果你真的在config / environment.rb中定义它,就像你说的那样,我可以复制你的问题的唯一方法是使用rails server
运行rails server
, 然后将变量放入config / environment.rb ,在一个引用它视图或控制器在某处,然后尝试加载我的应用程序的特定部分。
如果我停止服务器并再次启动它并再次尝试访问该视图或控制器,那么它可以工作。 我估计你还没有重新启动你的服务器。
我通常使用所有全局站点设置创建内部config / initializers / yaml(yml)文件。 记得每次更改任何内容时都要重新启动服务器。
我不知道向environment.rb添加变量的解决方案是否实际上可以在Rails3中工作 – 具体来说,如果你没有在模块定义中定义变量,如下所示:
module MyConfig Max_ints = 5 end
如果你只是将它包含在一个简单的定义中,你就无法使用Max_ints。 或者至少那是我在实验时发现的事情。 我还认为使用初始化器/文件夹的建议在易用性方面可能是更好的解决方案。 请参阅Rails中的永久变量