Где поместить Глобальные переменные в Rails 3 - PullRequest
24 голосов
/ 30 августа 2010

Раньше я помещал глобальные переменные в environment.rb с моим приложением Rails 2.3.8, например:

MAX_ALLOWD_ITEMS = 6

В Rails 3 это не работает. Я пытался поместить его в приложение.и это не помогло.

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

Ответы [ 5 ]

47 голосов
/ 30 августа 2010

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

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

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

MyAppName::Application::YOUR_GLOBAL_VAR

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

Settings.my_setting
7 голосов
/ 13 июля 2013

Я обычно хожу с application_helper.rb Вот как это выглядит:

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

Затем я могу вставить my_global_variable в любом месте в качестве функции.

2 голосов
/ 30 августа 2010

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

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

1 голос
/ 04 апреля 2013

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

0 голосов
/ 19 октября 2012

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

module MyConfig
  Max_ints = 5
end

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

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