Я использовал глобальные переменные в environment.rb с моим приложением Rails 2.3.8, например:
MAX_ALLOWD_ITEMS = 6
Он не работает в Rails 3. Я попытался поместить его в application.rb, и это не помогло.
Что вы предлагаете?
Я использовал глобальные переменные в environment.rb с моим приложением Rails 2.3.8, например:
MAX_ALLOWD_ITEMS = 6
Он не работает в Rails 3. Я попытался поместить его в application.rb, и это не помогло.
Что вы предлагаете?
Если вы уже попробовали перезагрузить сервер, как предложил Райан, попробуйте поместить его в свой 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
Обычно я использую application_helper.rb Это выглядит так:
module ApplicationHelper
def my_global_variable
my_global_variable = "Helloworld!"
end
end
Затем я могу помещать my_global_variable где угодно как функцию.
Если вы действительно определяете его в config/environment.rb, как вы говорите, единственный способ дублировать вашу проблему - запустить сервер с помощью rails server
, , а затем ввода переменной на config/environment.rb, ссылаясь на него в представлении или контроллере где-нибудь, а затем пытаясь загрузить эту конкретную часть моего приложения.
Если я остановлю сервер и запустил его снова и снова, попробуйте получить доступ к этому представлению или контроллеру, тогда он будет работать. Я полагаю, вы просто не перезапустили свой сервер.
Я обычно создаю внутри config/initializers/yaml (yml) файл со всеми глобальными настройками сайта. не забудьте перезапустить сервер каждый раз, когда вы что-то меняете.
Я не знаю, будет ли решение добавления переменных в environment.rb действительно работать в Rails3 - быть конкретным, если вы не определили переменную внутри определения модуля следующим образом:
module MyConfig
Max_ints = 5
end
вы не сможете просто использовать Max_ints, если вы просто включите его в качестве голого определения. Или, по крайней мере, то, что я обнаружил, произошло, когда я экспериментировал с этим. Я также думаю, что предложение использовать инициализаторы/папку, возможно, является лучшим решением с точки зрения простоты использования. См. Постоянная переменная в Rails