あのAsakusa.rbから、dm-paginationバージョン0.3.2がリリースされました。

dm-pagination-0.3.2 is out from Asakusa.rb

最近の改善が取り込まれています。 dm-paginationはMerb with DataMapper用のpaginationを提供するプラグインです。 Rails用の pagination_scope の姉妹プラグインです。

See Also

posted by Png genki on Tue 31 Mar 2009 at 10:45

何回か忘れたので、記憶を定着させるためにメモしておきます。 rubyでLOAD_PATHに特定のディレクトリを追加したい場合、以下のように RUBYLIB環境変数が利用できます。

   1  export RUBYLIB=/usr/lib/site_ruby:$RUBYLIB

posted by Png genki on Sun 29 Mar 2009 at 00:30

s21gブログをRails-2.2.2からRails-2.3.2に対応させました。 主に以下のようなところで作業が発生しました。

  • session :off が不要になったので削除
  • application.rb ⇒ application_controller.rb
  • Test::Unit::TestCase から ActiveSupport::TestCaseに
    • test_helper.rbの中の定義もActiveSupport::TestCaseにする
  • formatted_xxx_url(:foo)をxxx_url(:format => :foo)に
posted by Png genki on Sat 28 Mar 2009 at 23:55

Rails-2.2.2で動いているRailsアプリをRails-2.3.2に移行する場合、

   1  % rake rails:update

を行うと便利ですが、これを実行すると、以下のようなファイルが影響を受けます。

   1  # Changed but not updated:
   2  #   (use "git add/rm <file>..." to update what will be committed)
   3  #
   4  #       deleted:    app/controllers/application.rb
   5  #       modified:   config/boot.rb
   6  #       modified:   config/environment.rb
   7  #       modified:   public/javascripts/controls.js
   8  #       modified:   public/javascripts/dragdrop.js
   9  #       modified:   public/javascripts/effects.js
  10  #       modified:   public/javascripts/prototype.js
  11  #
  12  # Untracked files:
  13  #   (use "git add <file>..." to include in what will be committed)
  14  #
  15  #       app/controllers/application_controller.rb
  16  no changes added to commit (use "git add" and/or "git commit -a")

ApplicationControllerのファイル名が、application_controller.rbに変更になっています。一貫性を持たせるためでしょうね。

posted by Png genki on Sat 28 Mar 2009 at 20:46

Passengerは非常に便利なのですが、 通常の設定では、アプリケーションへのアクセスが無い状態が5分程度続くと、プロセスがkillされてしまい、次回にアクセスする時に時間がかかるようになります。

これを回避するためには、httpd.confなどで、以下のように指定します。

   1  PassengerPoolIdleTime 0

これで、プロセス数の限界に達して追い出されるまで、Idle時間によってkillされる事は無くなります。

See Also

posted by Png genki on Sat 28 Mar 2009 at 20:36

待っていたものが登場したようです。

Rails Searchable API Doc

ss

上記は Rails-2.3.2のSearchable API Docです。 RailsのAPIを、class, method等を横断してLive Searchできるようです。

MerbのAPIドキュメント と比べても、勝るとも劣らない仕上がりですね。 オフライン状態でも使えるようにダウンロードできるバージョンも用意されている模様。

posted by Png genki on Sat 28 Mar 2009 at 18:23

ローカライゼーションの問題で再びRejectされたので、再度アップデート申請いたしました。

審査結果がでるまで、おそらくもう一週間ほどかかる見通しです。

お待たせして申し訳ありません。

posted by Png genki on Sat 28 Mar 2009 at 08:01

Reserved Instanceを使ってみるために、ec2-api-toolsをアップデートしてみました。

   1  % wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
   2  % unzip ec2-api-tools.zip

/usr/local/ec2-api-toolsあたりに移動させて、 環境変数EC2_HOMEを設定します。

Reserved Instanceを使う場合、最初に、自分が使いたいインスタンスが提供されているかどうか、以下のようにして調べます。

   1  % ec2drio -z us-east-1b -t m1.small
   2  OFFERING	3a98bf7d-96c3-4d2f-a263-123fa6b46d61	us-east-1b	m1.smal3y 	500.0	0.03	Linux/UNIX
   3  OFFERING	60dcfab3-a56c-4092-8c90-3677e9da02b7	us-east-1b	m1.smal1y 	325.0	0.03	Linux/UNIX

ゾーンとタイプを指定しています。

2カラム目にあるUUID風の文字列がoffering IDなので、これを覚えておきます。

続いて、実際にReserved Instanceを購入します。

   1  % ec2prio -c 1 -o 60dcfab3-a56c-4092-8c90-3677e9da02b7

-cで台数、-oで先ほどのoffering IDを指定します。 これで購入完了です。

   1  % ec2dri
   2  RESERVEDINSTANCES	(*****)	us-east-1b	m1.small	Linux/UNIX	1y 	0.03	325.0	1	2009-03-27T06:51:18+000payment-pending

しばらくすると(この記事を執筆時点では結構待ちました)、payment-pendingがactiveになります。

あとは、us-east-1bで、通常通りにm1.smallのインスタンスを起動すれば、 自動的にReserved Instanceの料金プランが適用されるようです。

See Also

posted by Png genki on Fri 27 Mar 2009 at 16:03

Rails-2.2以前とはちょっとやり方が変わったようなので、メモしておきます。 いままでは、:session_domainを指定すれば良かったのですが、 Rails2.3では、以下のように:domainを指定するようになったようです。

   1  config.action_controller.session = {
   2    :session_key => 'session_key',
   3    :domain => 'foo.com'
   4  }

See Also

posted by Png genki on Wed 25 Mar 2009 at 07:39

まだPokéDia-1.3のアップデート審査が通っていないのですが、 次期バージョンで実装予定のデータバックアップ・リストアについて、 実装方法を考えてみます。

データをバックアップする方法として最初に考えた方法は、 指定したメールアドレスにデータファイルを添付して送信するというものだったのですが、この場合、データをリストアするフローが以下のように面倒になってしまいます。

  1. メールの中の添付ファイルをダウンロード
  2. 添付されたデータファイルをどこかにアップロード
  3. データファイルをpokedia://restore?url={url to data file}でPokéDiaにダウンロードしてリストア

次に考えた方法は、バックアップデータファイルをアップロードするアップローダサービス(例えば backup.s21g.com)を用意して、

  1. PokéDiaからbackup.s21g.comに直接HTTP POSTでデータファイルをアップロード(メールアドレスをキーにする)すると、リストアURL(pokedia://restore?url={url to data file})を含んだメールがキーとして指定されたメールアドレスに届く。
  2. 届いたメールの中のリストアURLをタップすればリストア完了。

という流れです。今の所これが良さそうかな。 汎用的なサービスになりそうなので、http://appli.st で提供する方が良いかもしれないですね。

posted by Png genki on Sun 22 Mar 2009 at 15:41