merbのsliceをfreezeするには、

   1  % rake slices:<slice_name>:freeze

を実行すればOKです。

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

posted by Png genki on Tue 2 Dec 2008 at 09:02

merbのsliceを管理するRakeタスクの一覧をメモしておきます。 以下はmerb-auth-slice-activationの場合。

   1  slices:merb_auth_slice_activation:copy_assets
   2  slices:merb_auth_slice_activation:freeze
   3  slices:merb_auth_slice_activation:freeze:app
   4  slices:merb_auth_slice_activation:freeze:app_with_gem
   5  slices:merb_auth_slice_activation:freeze:gem
   6  slices:merb_auth_slice_activation:freeze:mailers
   7  slices:merb_auth_slice_activation:freeze:models
   8  slices:merb_auth_slice_activation:freeze:unpack
   9  slices:merb_auth_slice_activation:freeze:views
  10  slices:merb_auth_slice_activation:install
  11  slices:merb_auth_slice_activation:migrate
  12  slices:merb_auth_slice_activation:patch
  13  slices:merb_auth_slice_activation:preflight
  14  slices:merb_auth_slice_activation:setup_directories
  15  slices:merb_auth_slice_activation:spec
  16  slices:merb_auth_slice_activation:spec:controller
  17  slices:merb_auth_slice_activation:spec:default
  18  slices:merb_auth_slice_activation:spec:html
  19  slices:merb_auth_slice_activation:spec:mailer
  20  slices:merb_auth_slice_activation:spec:model
  21  slices:merb_auth_slice_activation:spec:view
  22  slices:merb_auth_slice_activation:stubs

posted by Png genki on Tue 2 Dec 2008 at 08:58

merb-mailerを使ってメールを送信するための設定方法のメモです。

config/init.rbもしくは、config/environments/***.rbの中で、 以下のように設定を記述します。

sendmailを使う場合

   1  Merb::BootLoader.before_app_loads do
   2    Merb::Mailer.config = {
   3      :sendmail_path => '/usr/sbin/sendmail'
   4    }
   5    Merb::Mailer.delivery_method = :sendmail
   6  end

SMTPを使う場合

   1  Merb::BootLoader.before_app_loads do
   2    Merb::Mailer.config = {
   3      :host   => 'smtp.yourdomain.com',
   4      :port   => '25',
   5      :user   => 'user',
   6      :pass   => 'pass',
   7      :auth   => :plain,
   8      :domain => "localhost.localdomain"
   9    }
  10  end

See Also

posted by Png genki on Mon 1 Dec 2008 at 23:06

MerbではRSpecを使ってテストをするのが標準構成になっていますが、 merb-genが生成したアプリケーションのひな形では、 rake specの実行結果は色付きにはなっていません。 これを色付きにするためには、 spec/spec.optsの中で以下のように設定します。

spec/spec.opts

   1  --color

これだけです。

posted by Png genki on Mon 1 Dec 2008 at 15:44

Gitでは、SVNなどと違ってリビジョン番号のような順序付きの数字ではなく、 ハッシュのような識別子でコミットが管理されています。 なので、時系列にそってコミットIDを列挙したい場合は、 以下のように git rev-list コマンドを使えば良いようです。

   1  % git rev-list 2dfb3...(snip)...cf210

これで、指定したコミットより過去(指定したコミットを含む)のハッシュが時系列にそって得られます。 先頭は一番新しいもので、末尾が一番古いものです。

   1  % git rev-list HEAD

とすると、全てのコミットのハッシュを時系列にそって取得出来ます。

posted by Png genki on Fri 28 Nov 2008 at 19:57

MacOSXのTerminal.appで、選択をした時に、 自動的に選択した文字列をコピーするSIMBLプラグイン TerminalCopyOnSelect を作ってみました。

TerminalCopyOnSelect.bundle.zip

インストール方法

  1. まずはSIMBL をインストールします
  2. 上述のTerminalCopyOnSelect.bundle.zipファイルをダウンロードして展開します
  3. 展開されたTerminalCopyOnSelect.bundleを、 ~/Library/Application Support/SIMBL/Plugins/の下にコピーします。 ディレクトリが無い場合は作成してください。
  4. Terminal.appのプロセスを終了し、Terminal.appをもう一度起動します

これでOKです。 一時的にこの機能をオフにする場合は、 以下のようにメニューから「Copy On Select」をオフにしてください。

ss01

オンに戻せば再び有効化されます。

追記

ソースコードをGitHubで公開しました。

MITライセンスという事でお願いします。

posted by Png genki on Tue 25 Nov 2008 at 17:56 with 4 comments

Merbのsliceは、独立したMerbのサブシステムを再利用する仕組みです。 はじめ、Railsのcomponentのようなものだと思っていたのですが、 どちらかというとEnginesのような機能を持っているようです。

Merbのsliceは、Gemで管理されているので、sliceを利用する場合は、 sliceのGemをインストールします。 例えば、 merb-auth-activation-slice を利用したい場合、 今の所Gemが配布されていないので、githubからソースを持ってきて、 以下のようにインストールします。

   1  % git clone git://github.com/ck/merb-auth-slice-activation.git 
   2  % cd merb-auth-slice-activation
   3  % sudo rake install

そうすると、以下のようにGemがbuildされてインストールされます。

   1  % gem list merb-auth-slice-activation
   2  
   3  *** LOCAL GEMS ***
   4  
   5  merb-auth-slice-activation (1.0)

この状態で、config/dependencies.rbファイルに依存関係を登録します。

config/dependencies.rb

   1  dependency "merb-auth-slice-activation"

続いて、sliceをアプリケーションにインストールするRake タスクを実行します。

   1  % 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 Png genki on Tue 25 Nov 2008 at 04:19

DHHの Tweet によるとRails-2.2.2がリリースされた模様です。

   1  % gem search -r rails
   2  (snip)
   3  rails (2.2.2)
   4  (snip)

Rails 2.2: i18n, HTTP validators, thread safety, JRuby/1.9 compatibility, docs

Rails 2.2 is finally done after we cleared the last issues from the release candidate program. This release contains an long list of fixes, improvements, and additions that’ll make everything Rails smoother and better, but we also have a number of star player features to parade this time.

posted by Png genki on Sat 22 Nov 2008 at 04:59

自分用メモをかねて。

debianを使ってる時は、

   1  % netstat -l -n -p | grep 4000

のような感じで調べていたのですが、MacOSXだとnetstatの挙動が微妙に違うようで、うまく調べられなくて困っていた所、shachiさんから教えてもらった方法を紹介します。

   1  % lsof -i :4000

こんな感じにlsofコマンドを使うと、ポート4000をListenしているプロセスを調べる事ができます。

Update

もうちょっと詳しく知りたい場合は、

   1  % lsof -n -P -i :5000

こんな感じのオプションを追加すると良い感じです。

posted by Png genki on Sat 22 Nov 2008 at 02:56

Merb-1.0.1では、development環境でも、 通常状態ではファイルにログを出力しないようになっています。 これを出力させるようにするためには、config/environments/development.rb の中で以下のように設定する必要があります。

   1    c[:log_file]  = Merb.root / "log" / "development.log"

posted by Png genki on Fri 21 Nov 2008 at 19:20