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

Не только необходимо знать Objective C (легкая часть), необходимо быть очень довольны простым C. Это - по-моему, самая сложная задача для большинства людей.

44
задан Simone Carletti 14 February 2013 в 20:01
поделиться

2 ответа

Rails >= 3, the application is itself a module (living in config/application.rb). You can store them in the application module

module MyApplication
  SUPER_SECRET_TOKEN = "123456"
end

Then use MyApplication::SUPER_SECRET_TOKEN to reference the constant.


Rails >= 2.1 && < 3 you should place them

  1. in /config/initializers when the constant has the applications scope
  2. when the constant refers to a specific model/controller/helper you can scope it within the class/module itself

Prior to Rails 2.1 and initializers support, programmers were used to place application constants in environment.rb.

Here's a few examples

# 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
64
ответ дан 26 November 2019 в 22:08
поделиться

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

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

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

РЕДАКТИРОВАТЬ:

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

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

10
ответ дан 26 November 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: