query: tag:slice

merbのsliceをアプリケーションに組み込むためには、以下の手順を踏みます。

  1. sliceのgemをインストール
  2. config/dependencies.rb 内でdependencyを追加
  3. rake slices::install を実行
  4. config/router.rb に slice用のrouteを追加

アンインストールする場合は、public/slices以下にのディレクトリがあれば削除して、インストール時に記述したものを削除すればOK.

posted by genki genki on Sun 4 Jan 2009 at 14:31 with 0 comments

merbが生成するデフォルトのアプリケーションのひな形には、最初からユーザ認証の仕組みを提供するmerb-auth-slice-passwordというSliceが組み込まれています。

これが提供するデフォルトのログイン画面を変更するためには、
app/views/exceptions/unauthenticated.html.erbファイルを作ればOKです。

posted by genki genki on Wed 31 Dec 2008 at 09:55 with 0 comments

merbのsliceはRubyGemsの形で提供されているのですが、
これをmerbアプリケーションの中に展開する方法は、
freezeとunpackの2通りあります。

  • freezeは、sliceのapp/以下のみを展開する
  • unpackは、sliceの中身全部を展開する

freezeを使う目的は、sliceの挙動を一部変更する事です。
そのため、sliceをfreezeしても、config/dependencies.rbの中で
sliceに対するdependencyを削除する事は出来ません。
依然としてsliceのgemに依存したままになります。

これに対して、unpackを使った場合、gemに内在する全てのファイルが展開されるため、config/dependencies.rbの中のsliceに対するdependencyを削除しても大丈夫な状態になります。

posted by genki genki on Tue 2 Dec 2008 at 09:48 with 0 comments

merbのsliceをfreezeするには、

pre>>
% rake slices::freeze
<<--

を実行すればOKです。

これにより、MERB_ROOT(Merbアプリケーションのルートディレクトリ)の下にslicesディレクトリが(無ければ)作成され、その下に
<slice_name>というディレクトリが出来ます。
Sliceはその中にfreezeされます。

posted by genki genki on Tue 2 Dec 2008 at 09:00 with 0 comments

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
<<--

posted by genki genki on Tue 2 Dec 2008 at 08:57 with 0 comments

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関連の設定を行います。

posted by genki genki on Tue 25 Nov 2008 at 03:31 with 0 comments