глобальная переменная приложения - PullRequest
14 голосов
/ 02 декабря 2011

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

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

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

Ответы [ 3 ]

15 голосов
/ 02 декабря 2011

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

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

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

MyApp::Application.config.my_key

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

15 голосов
/ 02 декабря 2011

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

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

9 голосов
/ 02 декабря 2011

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

...