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

Где лучшее место для определения константы в приложении Ruby on Rails?

В приложении Ruby on Rails, где лучше всего определить константу?

У меня есть массив постоянных данных, которые мне нужны для всех контроллеров в моем приложении.

4b9b3361

Ответ 1

Rails >= 3, приложение само по себе является модулем (живет в config/application.rb). Их можно сохранить в прикладном модуле

module MyApplication
  SUPER_SECRET_TOKEN = "123456"
end

Затем используйте MyApplication::SUPER_SECRET_TOKEN для ссылки на константу.


Rails >= 2.1 && < 3 вы должны поместить их

  • в /config/initializers, когда константа имеет область приложений
  • когда константа ссылается на конкретную модель/контроллер/помощник, вы можете охватить ее внутри самого класса/модуля

До поддержки Rails 2.1 и initializers программисты использовались для размещения констант приложения в среде environment.rb.

Вот несколько примеров

# config/initializers/constants.rb
SUPER_SECRET_TOKEN = "123456"

# helpers/application_helper.rb
module ApplicationHelper
  THUMBNAIL_SIZE= "100x20"

  def thumbnail_tag(source, options = {})
    image_tag(source, options.merge(:size => THUMBNAIL_SIZE)
  end

end

Ответ 2

Вы можете поместить их в config/environment.rb:

Rails::Initializer.run do |config|
    ...
    SITE_NAME = 'example.com'
end

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

EDIT:

Ответ

weppos - лучший ответ.

Сохраняйте константы в файле в config/initializers/*. rb