Где хранить (структурированные) данные конфигурации в Rails - PullRequest
5 голосов
/ 02 марта 2011

Для приложения на Rails 3, которое я пишу, я рассматриваю чтение некоторых данных конфигурации из файлов XML, YAML или JSON в локальной файловой системе.

Дело в том: где я долженположить эти файлы ?Есть ли в Rails-приложениях место по умолчанию для хранения такого рода контента?

В качестве примечания мое приложение развернуто на Heroku.

Ответы [ 4 ]

8 голосов
/ 02 марта 2011

То, что я всегда делаю, это:

  • Если файл является файлом общей конфигурации: я создаю файл YAML в каталоге / config с одним ключом верхнего класса на среду
  • Если у меня есть файл для каждой среды (большой проект): я создаю один YAML для среды и сохраняю их в / config / средах /

Затем я создаю инициализатор, куда я загружаю YAML, я символизирую ключи хеша конфигурации и назначаю его константе, такой как APP_CONFIG

4 голосов
/ 02 марта 2011

Я обычно использую этот метод:

config / config.yml

development:
  another_key: "test"
  app_name: "My App"
test:
  another_key: "test"
production:
  prova: "ciao"

затем создайте ostruct в инициализаторе

#config/initializer/load_config.rb
require 'ostruct'
config = OpenStruct.new(YAML.load_file("#{RAILS_ROOT}/config/config.yml"))
::AppSetting = OpenStruct.new(config.send(RAILS_ENV))

Нет таблицы БД, для каждой настройки среды, и вы можете получить информацию простым способом

AppSetting.another_key
AppSetting.app_name

здесь ссылка
хорошего дня!

1 голос
/ 02 марта 2011

Rails по умолчанию создает каталог config, который содержит много информации о конфигурации вашего приложения, включая информацию о базе данных и среде.Я думаю, что это логичное первое место для рассмотрения.

Вторым вариантом будет каталог app, который содержит все модели, представления и контроллеры для приложения, но я думаю, что этот каталог содержит исполняемый коди его шаблоны, так что я бы лично выбрал каталог config.

1 голос
/ 02 марта 2011

Вы также можете включить его в модель, чтобы вы могли вызывать Settings.var_name из любого места в вашем приложении, и он проанализирует файл для правильной среды.

С settingslogic gem:

class Settings < Settingslogic
  source "#{Rails.root}/config/settings.yml"
  namespace Rails.env
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...