Где поместить глобальную константу в Rails 3 - PullRequest
0 голосов
/ 07 декабря 2011

Я хочу определить глобальную константу в Rails 3, но я запутался, глядя на Google так много разных ответов.

Я пытался это решение , но оно не сработало и выдало ошибку:

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 ]

1 голос
/ 21 октября 2012

Думаю, лучший способ - определить собственный инициализатор в папке 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}"
1 голос
/ 07 декабря 2011

для этого вам нужен выделенный драгоценный камень, что-то вроде http://rubygems.org/gems/rails-3-settings

эта ветка имеет подробный ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...