将全局变量放在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中的永久变量