将全局变量放在Rails 3中的位置

Tam*_*Tam 25 ruby-on-rails global-variables ruby-on-rails-3

我曾经使用我的Rails 2.3.8应用程序将Global变量放在environment.rb中,例如:

MAX_ALLOWD_ITEMS = 6
Run Code Online (Sandbox Code Playgroud)

它似乎在Rails 3中不起作用.我尝试将它放在application.rb中并​​且没有帮助.

你有什么建议?

joh*_*ley 47

如果你已经尝试过像Ryan建议的那样重新启动服务器,请尝试将其放入以下内容中application.rb:

module MyAppName
  class Application < Rails::Application
    YOUR_GLOBAL_VAR  = "test"
  end
end
Run Code Online (Sandbox Code Playgroud)

然后你可以用你的控制器,视图或者任何地方的命名空间来调用它.

MyAppName::Application::YOUR_GLOBAL_VAR
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用settingslogic之类的东西.使用settingslogic,您只需创建一个yml配置文件和一个指向配置文件的模型(Settings.rb).然后,您可以在rails应用中的任意位置访问这些设置:

Settings.my_setting
Run Code Online (Sandbox Code Playgroud)

  • 我创建了一个受settingslogic启发的插件,但它不需要您为设置创建一个类.您只需要包含yml文件,并在服务器启动时动态创建该类.这是回购:https://github.com/cowboycoded/yettings (3认同)
  • 它不是变量,而是常量,意味着:它不能在应用程序中设置.我在这里被搜索引擎误导,因为这里使用了错误的术语. (2认同)

bha*_*kku 7

我通常使用application_helper.rb这是它的样子:

module ApplicationHelper
  def my_global_variable 
    my_global_variable = "Helloworld!"      
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我可以将my_global_variable放在任何地方作为函数.