Merbはコマンドラインから-c 3のように指定する事で、 クラスターとして起動出来ますが、これを設定ファイルの 中から行う場合には、以下のように書けば良いようです。

config/init.rb

   1  Merb::Config.use do |c|
   2   ...
   3    c[:port] = 4001
   4    c[:cluster] = 2
   5  end

あとは、普通にmerbコマンドで起動するだけです。 config/environments/production.rbなどで設定しても良いですね。

posted by Png genki on Tue 17 Feb 2009 at 01:04

今月もRails勉強会 に行ってきました。

Merbのセッションをやる予定でしたが、1.9.1対応の話とネタが被ったのでマージしました。

  • ruby-1.9.1で、merbのspecが通らなくなった
    • そもそもrspecがまだruby-1.9.1に対応してない
    • ubuntuだとGemでインストールしたコマンドが実行出来ない
      • ruby-1.9.1のバグ?

ということで、会場ででてきた修正案

   1  static int
   2  file_load_ok(const char *path)
   3  {
   4      return eaccess(path, R_OK) == 0 && rb_file_file_p(Qnil, rb_str_new2(path));
   5  }

eaccessでチェックしてるだけだったので、環境によっては ディレクトリをloadしようとしてエラーが発生してしまうようです。 この問題が発生する典型的な例としては、

   1  lib/foo/
   2  bin/foo

というようなディレクトリ階層にある場合に、load "foo"を行う場合が挙げられます。 結構深刻な問題だと思うので、早いうちに修正版のruby-1.9.1がリリースされると良いです。

懇親会ではCOBOLの話をしてました。 メタコボラーの時代がくる!?

posted by Png genki on Mon 16 Feb 2009 at 14:29

ちまたで話題のCanonical URLですが、既存のRailsアプリケーションを Canonical URLに対応させるためのプラグインを紹介します。

config/environment.rbの中で、以下の行を追加します。

   1  config.gem 'mbleigh-canonical-url',
   2    :lib => 'canonical_url',
   3    :source => 'http://gems.github.com'

続いて、sudo rake gems:install でGemをインストールします。 次に、ViewのHEADの中に以下の一行を追加します。

   1  <%= canonical_link_tag %>

最後に、Controllerのshowアクションの中で、 respond_toやrenderの呼び出しより上に以下の一行を追加します。

   1  canonical_url article_path(@article)

これはarticlesというリソースの例ですが、 実際のアプリケーションで使っているリソース名に置き換えてください。

これで完了。 Slagを使っていたりする場合に、Permalinkをcanonical urlとして指定したりするのが典型的な使い方になるのかな。

See Also

posted by Png genki on Sat 14 Feb 2009 at 22:40

gemファイルはRubyのライブラリ配布用のアーカイブ的なファイル形式ですが、 今回はこれを展開して中身を取り出す方法を紹介します。

まずは、適当なgemファイルを用意して、tarコマンドで展開します。

   1  % tar xvf foo.gem
   2  % ls
   3  data.tar.gz         metadata.gz

このように、data.tar.gzとmetadata.gzという二つのファイルが出てきます。

続いて、data.tar.gzを展開すると、gemspecファイルに記載されている ファイル群一式が展開されます。

   1  % tar data.tar.gz

metadata.gzは、gzipで圧縮されたYAML形式のgemspecです。

追記

gemファイルを展開する方法としては、gem unpackという専用のコマンドがあるようです。見落としていた。

posted by Png genki on Sat 14 Feb 2009 at 16:35 with 2 comments

Ruby-1.9.1がリリースされて以来、 @maiha さんと一緒にMerbのRuby-1.9.1対応のための作業を続けてきましたが、 ようやくMerbアプリケーションをRuby-1.9.1で動かす事ができました。

ss http://merbi.st

決定的に重要だったのは、@ko1_twitterさんが作ってくれた methoparaです。 これによって、merbが抱えていたmerb-action-argsに関する問題を解決するための道が開かれ、Ruby-1.9.1対応を行うためのモチベーションが高まりました。

今回のRuby-1.9.1対応のために作ったパッチや、修正版のGemなどの多くは github上に残っています (http://github.com/maiha, http://github.com/genki) 残りは、http://merbi.st/pluginsで公開されています。

Good luck!

posted by Png genki on Sat 14 Feb 2009 at 15:06

The ruby-1.9.1 had come to the world, and several days went by...

@maiha and I have worked for making the merb to be correspond to the ruby-1.9.1. And now we are very happy, because we can announce there is the first child of Merb and ruby-1.9.1.

http://merbi.st is the site which is running on merb with ruby-1.9.1.

ss

Our efforts are remaining at several places. Most of them are in github (see http://github.com/maiha, http://github.com/genki). Others are published on here http://merbi.st/plugins

Good luck!

posted by Png takiuchi on Sat 14 Feb 2009 at 14:42

先週申請していたPokéDia-1.2のアップデート申請ですが、 再申請が必要となってしまったので、問題を解決して再度申請いたしました。

今回の問題解決の過程で生じた副産物として、 Bookナビゲーション用のUIToolbarアイコンを提供いたします。

book.png

たいしたものではないので、役立つようであればご自由にお使いください。

おそらく、もう数日お待たせする事になってしまい、申し訳ありません。

See Also

posted by Png genki on Sat 14 Feb 2009 at 13:50

irb_rocketがRuby-1.9.1で動かないよ、というコメントを頂いたので、 ruby-terminfoをRuby-1.9.1対応にしてみました。

これでirb_rocketをRuby-1.9.1で使う事が出来ます。

   1  % sudo gem install irb_rocket --source http://merbi.st

posted by Png genki on Fri 13 Feb 2009 at 16:20

@maiha さんがRuby-1.9.1でMongrelをインストールできるようにしてくれました。 修正したバージョンは、以下のコマンドでインストール出来ます。

   1  % sudo gem install mongrel --source http://merbi.st

不要になったと思われるfastthread関係のgemへの依存を切っています。

それにしても、Mongrelってメンテナンスされてるのかな。 結構メンテナンスされてるのかどうなのかわからないGemがあって悩みどころですね。

posted by Png genki on Fri 13 Feb 2009 at 10:09

RubyGemsをインストールする時に、--source オプションによってgemリポジトリを指定する事が出来ますが、 これを指定した場合、そのGemが依存するGemも同じsourceから取ってこようとするため、 依存するGem一式を全てそのgemリポジトリ上に用意する必要があります。

これはなかなか大変なので、--source指定した場合には、 指定した場所に無い場合、システムに設定されているデフォルトのgemリポジトリに探しにいってくれるとありがたいですね。

posted by Png genki on Fri 13 Feb 2009 at 09:25