Skip to content

Refinery CMS v2 変更点

Posted on:2012年3月18日 at 23:30

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 から変更点をまとめておく。

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 = &lt;%= Refinery::I18n.config.enabled.inspect %>

  # config.default_locale = &lt;%= Refinery::I18n.config.default_locale.inspect %>

  # config.current_locale = &lt;%= Refinery::I18n.config.current_locale.inspect %>

  # config.default_frontend_locale = &lt;%= Refinery::I18n.config.default_frontend_locale.inspect %>

  # config.frontend_locales = &lt;%= Refinery::I18n.config.frontend_locales.inspect %>

  # config.locales = &lt;%= Refinery::I18n.config.locales.inspect %>
end

となっている。