merbのsliceをインストールする手順
merbのsliceをアプリケーションに組み込むためには、以下の手順を踏みます。
- sliceのgemをインストール
- config/dependencies.rb 内でdependencyを追加
- rake slices::install を実行
- config/router.rb に slice用のrouteを追加
アンインストールする場合は、public/slices以下にのディレクトリがあれば削除して、インストール時に記述したものを削除すればOK.
merbのsliceをアプリケーションに組み込むためには、以下の手順を踏みます。
アンインストールする場合は、public/slices以下にのディレクトリがあれば削除して、インストール時に記述したものを削除すればOK.
merbが生成するデフォルトのアプリケーションのひな形には、最初からユーザ認証の仕組みを提供するmerb-auth-slice-passwordというSliceが組み込まれています。
これが提供するデフォルトのログイン画面を変更するためには、app/views/exceptions/unauthenticated.html.erbファイルを作ればOKです。
merbのsliceはRubyGemsの形で提供されているのですが、
これをmerbアプリケーションの中に展開する方法は、
freezeとunpackの2通りあります。
app/以下のみを展開するfreezeを使う目的は、sliceの挙動を一部変更する事です。
そのため、sliceをfreezeしても、config/dependencies.rbの中で
sliceに対するdependencyを削除する事は出来ません。
依然としてsliceのgemに依存したままになります。
これに対して、unpackを使った場合、gemに内在する全てのファイルが展開されるため、config/dependencies.rbの中のsliceに対するdependencyを削除しても大丈夫な状態になります。
merbのsliceをfreezeするには、
pre>>
% rake slices::freeze
<<--
を実行すればOKです。
これにより、MERB_ROOT(Merbアプリケーションのルートディレクトリ)の下にslicesディレクトリが(無ければ)作成され、その下に<slice_name>というディレクトリが出来ます。
Sliceはその中にfreezeされます。
merbのsliceを管理するRakeタスクの一覧をメモしておきます。
以下はmerb-auth-slice-activationの場合。
pre>>
slices:merb_auth_slice_activation:copy_assets
slices:merb_auth_slice_activation:freeze
slices:merb_auth_slice_activation:freeze:app
slices:merb_auth_slice_activation:freeze:app_with_gem
slices:merb_auth_slice_activation:freeze:gem
slices:merb_auth_slice_activation:freeze:mailers
slices:merb_auth_slice_activation:freeze:models
slices:merb_auth_slice_activation:freeze:unpack
slices:merb_auth_slice_activation:freeze:views
slices:merb_auth_slice_activation:install
slices:merb_auth_slice_activation:migrate
slices:merb_auth_slice_activation:patch
slices:merb_auth_slice_activation:preflight
slices:merb_auth_slice_activation:setup_directories
slices:merb_auth_slice_activation:spec
slices:merb_auth_slice_activation:spec:controller
slices:merb_auth_slice_activation:spec:default
slices:merb_auth_slice_activation:spec:html
slices:merb_auth_slice_activation:spec:mailer
slices:merb_auth_slice_activation:spec:model
slices:merb_auth_slice_activation:spec:view
slices:merb_auth_slice_activation:stubs
<<--
Merbのsliceは、独立したMerbのサブシステムを再利用する仕組みです。
はじめ、Railsのcomponentのようなものだと思っていたのですが、
どちらかというとEnginesのような機能を持っているようです。
Merbのsliceは、Gemで管理されているので、sliceを利用する場合は、
sliceのGemをインストールします。
例えば、
merb-auth-activation-slice
を利用したい場合、
今の所Gemが配布されていないので、githubからソースを持ってきて、
以下のようにインストールします。
pre>>
% git clone git://github.com/ck/merb-auth-slice-activation.git
% cd merb-auth-slice-activation
% sudo rake install
<<--
そうすると、以下のようにGemがbuildされてインストールされます。
pre>>
% gem list merb-auth-slice-activation
*** LOCAL GEMS ***
merb-auth-slice-activation (1.0)
<<--
この状態で、config/dependencies.rbファイルに依存関係を登録します。
config/dependencies.rb
ruby>>
dependency "merb-auth-slice-activation"
<<--
続いて、sliceをアプリケーションにインストールするRake
タスクを実行します。
pre>>
% rake slices:merb_auth_slice_activation:install
<<--
Sliceに関連するRubyコードがMERB_ROOT/slices以下に、
Assetsファイルが、public/slices/merb-auth-slice-activation以下に展開されます。
あとは、config/router.rbやconfig/init.rb、config/environments/*.rb
などの中で、適宜slice関連の設定を行います。