Настройки приложения Rails?
Я работаю над приложением Rails, которое имеет аутентификацию пользователя, которая предоставляет учетную запись администратора. В учетной записи администратора я сделал страницу для настроек сайта.
Мне было интересно, что является нормой для создания этих настроек. Скажем, например, я бы хотел, чтобы одним из параметров было изменение названия приложения или изменение цвета заголовка.
Что я ищу, так это чтобы кто-то объяснил основной процесс / метод - не обязательно конкретный код - хотя это было бы здорово!
3 ответа
Для общей конфигурации приложения, которую не нужно хранить в таблице базы данных, я хотел бы создать config.yml
файл в каталоге конфигурации. Для вашего примера это может выглядеть так:
defaults: &defaults
app_title: My Awesome App
header_colour: #fff
development:
<<: *defaults
test:
<<: *defaults
app_title: My Awesome App (TEST ENV)
production:
<<: *defaults
Этот файл конфигурации загружается из пользовательского инициализатора в config/initializer:
Rails 2.x:
APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV]
Rails 3.x:
APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
Затем вы можете получить значение, используя:
title = APP_CONFIG['app_title']
Смотрите этот Railscast для более подробной информации.
Есть довольно хороший плагин / gem Settingslogic.
# app/config/application.yml
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
Вы можете использовать эти настройки где угодно, например, в модели:
class Post < ActiveRecord::Base
self.per_page = Settings.pagination.posts_per_page
end
Вот что я сделал, и, похоже, большинство людей тоже следуют этому подходу: http://kpumuk.info/ruby-on-rails/flexible-application-configuration-in-ruby-on-rails/