широкое применение глобальной переменной


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

Например, я хотел бы иметь переменную CUSTOMER_NAME='John', доступ к которой можно получить в helper, грабли Задача, контроллер и Модель. Где я должен определить эту переменную в ПриложенииRails ?

Я использую Rails v2.3.2

3 13

3 ответа:

В инициализаторе в /app/config/initializers all .файлы rb здесь загружаются, я обычно создаю один под названием preferences.РБ для таких вещей, как это.

См.: http://guides.rubyonrails.org/configuring.html#using-initializer-files

Альтернативным подходом является установка ключа на объект config в config/application.rb, например:

MyApp::Application.configure do
   # ...
   config.my_key = 'some "global" value'
end

Затем вы можете получить доступ к my_key из любой точки вашего приложения с помощью всего этого:

MyApp::Application.config.my_key
Кроме того, Майк Перхэм описал аналогичный, хотя и более всеобъемлющий подход в своем блоге.

Вам нужна истинная глобальная константа? Используйте ::COSTUMER_NAME. Вам нужна истинная глобальная переменная? Используйте $COSTUMER_NAME (обескуражено). Вам нужна запрос-глобальная переменная? Используйте Hash в методе #env.