собственная конфигурация (свои опции) 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"

Ну и так далее. Короче, весело и вкусно.

No Comments.

Leave a Reply

(обязательно)

(обязательно)