Мне нужно создать один вариант конфигурации для моего приложения Rails. Это может быть одинаковым для всех сред. Я обнаружил, что если я установлю его environment.rb
, он будет доступен в моих представлениях, а это именно то, что я хочу ...
environment.rb
AUDIOCAST_URI_FORMAT = http://blablalba/blabbitybla/yadda
Прекрасно работает.
Однако мне немного не по себе. Это хороший способ сделать это? Есть ли способ более модный?
YAML::ENGINE.yamler = 'syck'
чтобы это работало stackoverflow.com/a/6140900/414220RAILS_ENV
наRails.env
иRAILS_ROOT
наRails.root
.Rails.application.config.whatever_you_want = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]
Версия кода инициализатора Rails 3 выглядит следующим образом (RAILS_ROOT и RAILS_ENV устарели)
APP_CONFIG = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]
Кроме того, Ruby 1.9.3 использует Psych, который делает ключи слияния чувствительными к регистру, поэтому вам нужно будет изменить файл конфигурации, чтобы это учесть, например
источник
"#{Rails.root.to_s}"
;"#{Rails.root}"
работает.Rails.root.join('config', 'config.yml')
вместо"#{Rails.root.to_s}/config/config.yml"
AppName::Application.config.custom
Рельсы> = 4.2
Просто создайте
YAML
файл вconfig/
каталоге, например:config/neo4j.yml
.Содержимое
neo4j.yml
может быть примерно таким, как показано ниже (для простоты я использовал default для всех сред):в
config/application.rb
:Теперь ваша пользовательская конфигурация доступна, как показано ниже:
Больше информации
Официальный документ API Rails описывает
config_for
метод как:Если вы не хотите использовать
yaml
файлКак говорится в официальном руководстве Rails:
пример
Официальный справочник по
config_for
методу | Официальное руководство по Railsисточник
Шаг 1. Создайте config / initializers / appconfig.rb
Шаг 2: Создайте config / config.yml
Шаг 3. Получите константы в любом месте кода
источник
Я просто хотел обновить это для последних интересных вещей в Rails 4.2 и 5, теперь вы можете сделать это внутри любого из своих
config/**/*.rb
файлов:(и это там буквально
x
, то естьconfig.x.
буквально должно быть так, а затем вы можете добавить все, что захотите, послеx
)... и это будет доступно в вашем приложении как:
Подробнее см. Здесь: http://guides.rubyonrails.org/configuring.html#custom-configuration
источник
x
.You can configure your own code through the Rails configuration object with custom configuration under either the config.x namespace, or config directly. The key difference between these two is that you should be using config.x if you are defining nested configuration (ex: config.x.nested.nested.hi), and just config for single level configuration (ex: config.hello).
Источник: guides.rubyonrails.org/configuring.html#custom-configurationПросто дополнительная информация по этой теме:
".with_indifferent_access" позволяет вам получить доступ к значениям в хэше, используя строковый ключ или эквивалентный символьный ключ.
например.
APP_CONFIG['audiocast_uri_format'] => 'http://blablalba/blabbitybla/yadda'
APP_CONFIG[:audiocast_uri_format] => 'http://blablalba/blabbitybla/yadda'
Чисто для удобства, но я предпочитаю, чтобы мои ключи были представлены в виде символов.
источник
Я использую что-то похожее на John для Rails 3.0 / 3.1, но сначала мне нужно обработать файл erb:
Это позволяет мне использовать ERB в моей конфигурации, если мне нужно, например, читать redistogo url heroku:
источник
Rails 4
Создать собственную конфигурацию yaml и загрузить ее (и сделать доступной для вашего приложения) аналогично тому, как это сделать
database_configuration
.Создайте свой
*.yml
, в моем случае мне нужен был файл конфигурации redis.config/redis.yml
Затем загрузите конфигурацию
config/application.rb
Доступ к значениям:
Rails.configuration.redis_configuration[Rails.env]
подобно тому , как вы можете иметь доступ кdatabase.yml
ВУRails.configuration.database_configuration[Rails.env]
источник
Rails.configuration.redis_configuration = YAML.load_file("#{Rails.root}/config/redis.yml")[Rails.env]
. Однако в рельсах 4.2 и выше ответ smathy, вероятно, является более простым способом.Основываясь на элегантном решении Омера Аслама, я решил преобразовать ключи в символы. Единственное изменение:
Это позволяет вам затем ссылаться на значения по символам как ключи, например
Это кажется аккуратнее для моих глаз.
(Написано как ответ, поскольку моя репутация недостаточно высока, чтобы комментировать ответ Омера)
источник
Мне нравится simpleconfig . Это позволяет вам иметь конфигурацию для каждой среды.
источник
см. мой ответ на Где лучше всего хранить параметры приложения: базу данных, файл, код ...?
Вариант того, что у вас было, это простая ссылка на другой файл. Он видит, что environment.rb не обновляется постоянно и в нем нет кучи специфичных для приложения вещей. Хотя это и не конкретный ответ на ваш вопрос «Это путь Rails?», Возможно, там будет некоторое обсуждение этого вопроса.
источник
Я предпочитаю доступ к настройкам через глобальный стек приложений. Я избегаю лишних глобальных переменных в локальной области.
конфиг / Инициализаторы / myconfig.rb
И получить к нему доступ с помощью.
источник
Мой способ загрузки настроек до инициализации Rails
Позволяет использовать параметры инициализации Rails и настраивать параметры для каждой среды.
Вы можете получить настройки двумя способами: Settings ['email'] или Settings.email
источник
Мой лучший способ пользовательской конфигурации, с сообщением поднять, когда setting.yml отсутствует.
загружается из пользовательского инициализатора в config / initializers / custom_config.rb
Создайте YAML в config / setting.yml
источник