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

时间:2011-12-07 19:00:43

标签: ruby-on-rails ruby-on-rails-3 initialization

我想在Rails 3中定义全局常量,但我很困惑在Google上看到这么多不同的答案。

我正在尝试this solution,但它不起作用并且出错:

Undefined method `music_type' for #<Rails::Application::Configuration:0xb7ac0230>

在/config/application.rb

module RailsRoot
 Class Application < Rails :: Application
 config.music_type = '2'
 end
end

在控制器

RailsRoot::Application::config.music_type

不确定我做错了什么。

由于

2 个答案:

答案 0 :(得分:1)

你需要一个专门的宝石,像http://rubygems.org/gems/rails-3-settings

一样

this帖子有详细的答案

答案 1 :(得分:1)

我认为,最好的方法是在config/initializers/文件夹中定义自己的初始值设定项。

示例:

my_initializer.rb文件夹中创建config/initializers/,内容如下:

require 'socket'

def local_ip
  orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off      reverse DNS resolution temporarily

  UDPSocket.open do |s|
    s.connect '64.233.187.99', 1
    s.addr.last
  end
ensure
  Socket.do_not_reverse_lookup = orig
end

SERVER_IP = local_ip

并且在某些控制器中使用该常量:

log_it "Server IP address is: #{SERVER_IP}"