собственная конфигурация (свои опции) rails-приложения
В названии я имею ввиду не настройку Rails, которая в config/application.rb и некоторых других файлах, а место, где следует хранить конфигурацию приложения с опциями типа ‘количество новостей на странице’ или ‘количество символов в отрывке текста на странице списка новостей’ итд, короче говоря, свои собственные конкретные для данного приложения настройки.
Хранить некоторые из таких настроек в БД не вариант, т.к., несмотря на все кэширование запросов и прочих штук, если настройка очень часто используется есть вариант уронить сервер БД, еще раз подчеркну, что это далеко не всегда и далеко не для всех опций. Вообщем, в местах где это возможно я храню конфигурацию в файле и в не простом файле, а YML.
Для таких интересных целей я использую гем settingslogic. Дальше не будет ничего другого как перевод текста по ссылке выше.
установка
Ничего нового. Кидаем в Gemfile:
gem 'settingslogic' |
и бандлим:
bundle install |
Теперь создаем файл app/models/settings.rb
:
1 2 3 4 | class Settings < Settingslogic source "#{Rails.root}/config/application.yml" namespace Rails.env end |
где записывать настройки
Создаем файл config/application.yml
и в соответствии с форматом YML прописываем настройки, получиться что-то типа (взял с вышеуказанной офстранице гема):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | defaults: &defaults cool: saweet: nested settings neat_setting: 24 awesome_setting: <%= "Did you know 5 + 5 = #{5 + 5}?" %> development: <<: *defaults neat_setting: 800 test: <<: *defaults production: <<: *defaults |
как использовать в приложении
В представлении, например, использовать настройку можно так:
1 2 | <%=Settings.neat_setting%> # 800 - development, 24 - остальные <%=Settings.cool.saweet%> # "nested settings" |
Ну и так далее. Короче, весело и вкусно.