Подтвердить что ты не робот

Где разместить глобальные переменные в Rails 3

Я использовал глобальные переменные в environment.rb с моим приложением Rails 2.3.8, например:

MAX_ALLOWD_ITEMS = 6

Он не работает в Rails 3. Я попытался поместить его в application.rb, и это не помогло.

Что вы предлагаете?

4b9b3361

Ответ 1

Если вы уже попробовали перезагрузить сервер, как предложил Райан, попробуйте поместить его в свой application.rb следующим образом:

module MyAppName
  class Application < Rails::Application
    YOUR_GLOBAL_VAR  = "test"
  end
end

Затем вы можете вызвать его с помощью пространства имен в своих контроллерах, представлениях или где угодно.

MyAppName::Application::YOUR_GLOBAL_VAR

Другой альтернативой было бы использовать что-то вроде settingslogic. С помощью настроек logic вы просто создаете файл конфигурации yml и модель (Settings.rb), которая указывает на файл конфигурации. Затем вы можете получить доступ к этим настройкам в любом месте своего приложения rails:

Settings.my_setting

Ответ 2

Обычно я использую application_helper.rb Это выглядит так:

module ApplicationHelper
  def my_global_variable 
    my_global_variable = "Helloworld!"      
  end
end

Затем я могу помещать my_global_variable где угодно как функцию.

Ответ 3

Если вы действительно определяете его в config/environment.rb, как вы говорите, единственный способ дублировать вашу проблему - запустить сервер с помощью rails server, , а затем ввода переменной на config/environment.rb, ссылаясь на него в представлении или контроллере где-нибудь, а затем пытаясь загрузить эту конкретную часть моего приложения.

Если я остановлю сервер и запустил его снова и снова, попробуйте получить доступ к этому представлению или контроллеру, тогда он будет работать. Я полагаю, вы просто не перезапустили свой сервер.

Ответ 4

Я обычно создаю внутри config/initializers/yaml (yml) файл со всеми глобальными настройками сайта. не забудьте перезапустить сервер каждый раз, когда вы что-то меняете.

Ответ 5

Я не знаю, будет ли решение добавления переменных в environment.rb действительно работать в Rails3 - быть конкретным, если вы не определили переменную внутри определения модуля следующим образом:

module MyConfig
  Max_ints = 5
end

вы не сможете просто использовать Max_ints, если вы просто включите его в качестве голого определения. Или, по крайней мере, то, что я обнаружил, произошло, когда я экспериментировал с этим. Я также думаю, что предложение использовать инициализаторы/папку, возможно, является лучшим решением с точки зрения простоты использования. См. Постоянная переменная в Rails