2 月後半に Refinery CMS のメジャーバージョンアップがされている。
Refinery 2.0 makes a number of very important updates to the project. Chief amongst these, Refinery now supports Rails 3.2 and the asset pipeline, and is now mountable as a Rails engine.
Rails 3.2 への対応が行われており、Ruby は 1.9.3 が推奨となっている。
Refinery CMS 自体の仕組みでは、軽く触ってみたところ、名前空間の扱い、設定情報の扱いが大きく変わっていた。 Changelog - resolve/refinerycms Wiki - GitHub から変更点をまとめておく。
- ワークフローの変更
- extension のインストールには、
rake db:seed
の実行が必要 - 設定情報 (Settings) は、
config/initializers/refinery
ディレクトリでカスマイズする(admin 機能でない) - Settings extension は Refiney Core には含まれなくなった
- extension のインストールには、
- Extensions の変更
- extension の生成書式の変更
- Settings (設定情報) は
RefinerySetting
で扱われなくなった - 公式(デフォルトで組み込まれている)の extension のネームスペースの変更
Table of Contents
Open Table of Contents
ワークフローの変更
extension のインストールには、rake db:seed
の実行が必要
extension のインストールには、rake db:seed
の実行が必要となっている。
extension を作成する際の適切なワークフロー以下の通りとなる。
# Add extension to your Gemfile
rails g refinery:<your_extension>
rake db:migrate
rake db:seed
設定情報 (Settings) は、config/initializers/refinery
ディレクトリでカスマイズする(admin 機能でない)
Refinery アプリケーションの全ての設定は、config/initializers/refinery
内で行われる。
extension を作成した際には、上記ディレクトリ内にテンプレートから作成された設定がコピーされる。
Settings extension は Refiney Core には含まれなくなった
これまで Settings extension は Refinery Core に含まれてきていたが、Core から外れた。 別途 extension として導入は可能。
Extensions の変更
extension の生成書式の変更
v2.0 からは以下の書式で生成。
rails generate refinery:engine <model_name> field:type field:type field:type
より詳細なオプションは、
rails generate refinery:engine
で確認できる。
Settings (設定情報) は RefinerySetting
で扱われなくなった
Settings (設定情報)は RefinerySetting
からアクセスしていたが、使用されなくなり、代わりに Refinery::<ExtensionNamespace>.value
でアクセスする。
例えば、Prtfolio
extension では、Refinery::Portfolio.approximate_ascii_for_i18n
でアクセスを行う。
I18n
などでも、
> Refinery::I18n.default_locale
=> :ja
という感じ。
設定情報は、内部的には 2 つの別のファイルの extension 内で扱われている。
1 つは、lib/refinery/<extension_name>/configuration.rb
の中でデフォルトの値が宣言されており、
もう 1 つは、extension 生成時に generator から読み取られる lib/generators/refinery/<extension_name>/templates/config/initializers/<extension_name>.rb.erb
内にテンプレートが記載されている。
例えば、I18n
の場合は、
lib/refinery/i18n/configuration.rb
(デフォルト値の設定):
module Refinery
module I18n
include ActiveSupport::Configurable
config_accessor :current_locale, :default_locale, :default_frontend_locale,
:enabled, :frontend_locales, :locales
self.enabled = true
self.default_locale = :en
self.default_frontend_locale = self.default_locale
self.current_locale = self.default_locale
self.frontend_locales = [self.default_frontend_locale]
self.locales = self.built_in_locales
end
end
lib/generators/refinery/templates/config/initializers/refinery/i18n.rb.erb
(テンプレートの設定):
# encoding: utf-8
Refinery::I18n.configure do |config|
# config.enabled = <%= Refinery::I18n.config.enabled.inspect %>
# config.default_locale = <%= Refinery::I18n.config.default_locale.inspect %>
# config.current_locale = <%= Refinery::I18n.config.current_locale.inspect %>
# config.default_frontend_locale = <%= Refinery::I18n.config.default_frontend_locale.inspect %>
# config.frontend_locales = <%= Refinery::I18n.config.frontend_locales.inspect %>
# config.locales = <%= Refinery::I18n.config.locales.inspect %>
end
となっている。