アーカイブ

2007 年 10 月 のアーカイブ

WEB+DB PRESS Tech Meeting. このエントリーを含むはてなブックマーク はてなブックマーク - WEB+DB PRESS Tech Meeting.

2007 年 10 月 27 日 Comments off

本誌からのお知らせ:WEB+DB PRESS Tech Meeting|gihyo.jp

来る2007年12月発売号(Vol.42)で,本誌は7周年を迎えることになりました。読者のみなさまへ,これまでの感謝の気持ちをこめて,本誌初のイベント企画をお届けします。

おめでとう!!ってことで今日Amazonから届いたのでさっそく投函。祈って待とう。

WEB+DB PRESS Vol.41 WEB+DB PRESS Vol.41
技術評論社(2007-10-24)

  • (編集)WEB+DB PRESS編集部

技術評論社
新品価格:¥ 1,554
ASIN:477413256X

カテゴリー: 日記 タグ:

GetText.update_pofilesでハマる。解答編 このエントリーを含むはてなブックマーク はてなブックマーク - GetText.update_pofilesでハマる。解答編

2007 年 10 月 23 日 Comments off

・・・つづき。

  1. RubyToken::TkIDENTIFIERまたはRubyToken::TkCONSTANTを見つけて
  2. nameがIDかPLURAL_IDに含まれていれば
  3. つぎに現れるRubyToken::TkSTRINGのvalueをmsgidとして取り出す

というのがソースからmsgidを抽出する手順だった。
それでは問題の部分はどうなっていたのか、こんなソースをパースしてみた。

def _(word); word.concat('.'); end

here_document_1 = <<EOT
In here_document_1, #{_('one')}
EOT
here_document_2 = <<'EOT'
In here_document_2, #{_('two')}
EOT

implanted_in_string_1 = "In implanted_in_string_1, #{_('three')}"
implanted_in_string_2 = 'In implanted_in_string_2, #{_("four")}'

joined_with_plus = "In joined_with_plus, " + _('five')

just_string = "In just_string, _('six')"

puts here_document_1, here_document_2,
implanted_in_string_1, implanted_in_string_2,
joined_with_plus, just_string

続きを読む…

カテゴリー: Ruby タグ:

戻り読みできない。 このエントリーを含むはてなブックマーク はてなブックマーク - 戻り読みできない。

2007 年 10 月 23 日 Comments off

Rubyリファレンスマニュアル – 正規表現

方法1: 戻り読みと先読みを利用する方法 (戻り読み(lookbehind)は Oniguruma *7が必要)

おぉー残念。使えたらString#scan一発だったのになーって。

カテゴリー: Ruby タグ:

GetText.update_pofilesでハマる。問題編 このエントリーを含むはてなブックマーク はてなブックマーク - GetText.update_pofilesでハマる。問題編

2007 年 10 月 23 日 Comments off

Ruby-GetText-Package開発者向けドキュメント – よたらぼ 保管庫

現在、ヒアドキュメントも使うことができません。これは将来的にはサポートされるかもしれません。

結論はこうなんだけど、ググるまえにソースを読み始めてこの結論にたどり着いてしまったので使った時間を成仏させるために顛末を記す。

続きを読む…

カテゴリー: Ruby タグ:

extendとincludeについて。その3 このエントリーを含むはてなブックマーク はてなブックマーク - extendとincludeについて。その3

2007 年 10 月 19 日 Comments off

プログラミングRubyを見直したら「クラスとオブジェクト」の章に仕組みからちゃんと説明されていた。
買った時に目を通したはずなんだけど、全然記憶に残ってない。
いま分かったってことは、きっと理解がすすんだってことなわけで、まずはめでたい。

さらに進めてみると、その説明が刺さる疑問を持ったからってことだ。
では次の理解のために、どうやってそんな疑問を持つかってことなんだけど、それはとにかく触れる時間を増やすことくらいしか思いつかない。
しっかり自分のアンテナ張って、ときにはだれかのアンテナ借りて、新しいことを覚えるのは楽しい。

[ref.] extendとincludeについて。
[ref.] extendとincludeについて。その2

プログラミングRuby 第2版 言語編 プログラミングRuby 第2版 言語編
オーム社(2006-08-26)

  • (著)Dave Thomas
  • (著)Chad Fowler
  • (著)Andy Hunt
  • (翻訳)田和 勝
  • (翻訳)まつもと ゆきひろ

オーム社
新品価格:¥ 3,990
中古価格:¥ 3,614
ASIN:4274066428

カテゴリー: Ruby タグ:

extendとincludeについて。その2 このエントリーを含むはてなブックマーク はてなブックマーク - extendとincludeについて。その2

2007 年 10 月 18 日 Comments off

この前買った「Pro Active Record」を読んでいたら、どストライクな説明を見つけてバチッときたのでその部分を翻訳して大引用。

includeされたメソッドとextendされたメソッドには微妙な違いがあります。
モジュールをクラスにincludeすると、モジュール内に定義されたメソッドはそのクラス内に定義されたものとして扱われます。
つまりモジュールをincludeすると、それらのメソッドはそのクラスのすべてのインスタンスからアクセスできます。
対して、オブジェクトにモジュールをextendすると、モジュール内に定義されているメソッドはそのオブジェクトに対してのみ有効となります。
クラスにincludeされたメソッドはそのクラスのすべてのインスタンスに、extendされたメソッドはそのオブジェクトにのみ影響します。

—– P.120 Pro Active Record (Apress, 2007) by Kevin Marshall, Chad Pytel, Jon Yurek

Rubyリファレンスマニュアルと言っていることは同じなんだけど、言い回しがきた原因なんだと思う。
で、問題の場所はプラグインの参考元から持ってきたこの部分

module ActMethods
def acts_as_fortuned
self.extend ClassMethods
self.instance_eval {include InstanceMethods}

before_save :cast
end
end

なんでClassMethodsがextendでInstanceMethodsがincludeなのかってことだった。
これはClassMethodsはクラスオブジェクトだけにしか追加したくないからextendを、InstanceMethodsはクラス定義に追加したいからincludeってことか。
「クラスオブジェクト」とその構造を表す「クラス定義」としっかり分けて考えればよかったんだ。

[ref.] extendとincludeについて。
[ref.] プラグインを作ってみた。

Pro Active Record: Databases with Ruby and Rails (Pro) Pro Active Record: Databases with Ruby and Rails (Pro)
Apress(2007-09-10)

  • (著)Kevin Marshall
  • (著)Chad Pytel
  • (著)Jon Yurek

Apress
新品価格:¥ 4,334
ASIN:1590598474

カテゴリー: Ruby タグ:

Railsのアップグレード。 このエントリーを含むはてなブックマーク はてなブックマーク - Railsのアップグレード。

2007 年 10 月 13 日 Comments off

Riding Rails

To upgrade, `gem install rails`, set RAILS_GEM_VERSION to ‘1.2.5’ in config/environment.rb, and `rake rails:update:configs`.

こういう具体的な手順を知りたくてドキュメントを漁ったことがあるんだけど、見つからなかった。
修正内容ごとに対応方法が違ってしかりなんだと思うけど、Rails使うならここのフィードも読んでおけ、てのがお約束なんだろうか。
最初の二つは予想が付くけど、rakeのところはこのタスクの存在を知らないとやらないだろうな、と。

細かい疑問は尽きない。

カテゴリー: Rails タグ:

requireとloadのちがい。 このエントリーを含むはてなブックマーク はてなブックマーク - requireとloadのちがい。

2007 年 10 月 12 日 Comments off

Rubyリファレンスマニュアル – 組み込み関数

require は同じファイルは一度だけしかロードしませんが、 load は無条件にロードします。また、require は拡張子 .rb や .so を自動的に補完しますが、load は行いません。 require はライブラリのロード、load は設定ファイルの 読み込みなどに使うのが典型的な用途です。

へえぇ。

カテゴリー: Ruby タグ:

プラグインを作ってみた。 このエントリーを含むはてなブックマーク はてなブックマーク - プラグインを作ってみた。

2007 年 10 月 11 日 Comments off

IBM 境界を越える: Rails での拡張 – Japan

acts_as プラグインを解剖する

[ref.] acts_as_state_machine (記事にあるURLはすでに存在しないので)

プラグインの勉強にと、カヤックの人の記事を参考におみくじプラグインを作ってみました。
モデルにfortuneというアトリビュートがあれば、saveするときに勝手に運勢を突っ込みます。ただそれだけです。
こんな感じ。

>> boy = Person.new(:name => 'Keiichi')
>> puts boy.name, boy.fortune
Keiichi
nil
>> boy.save
>> puts boy.name, boy.fortune
Keiichi
小吉

詳細は以下の通り。

続きを読む…

カテゴリー: Rails タグ:

extendとincludeについて。 このエントリーを含むはてなブックマーク はてなブックマーク - extendとincludeについて。

2007 年 10 月 10 日 Comments off

Rubyリファレンスマニュアル – Object

include は、クラス(のインスタンス)に機能を追加します が、extend は、ある特定のオブジェクトだけにモジュールの機能を追加 したいときに使用します。
~コード(引用省略)~
extend の機能は、「特異クラスに対する include」 と言い替えることもできます。

うーん、分かったような気がするけど、実際に使い分けろと言われたら出来ない気がする。
つまりまだよく分かってないと言うことか。

カテゴリー: Ruby タグ: