2008-01-01から1年間の記事一覧

速報: Merb と Rails が統合

悪い冗談としか思えないんだけど、Merb と Rails が統合されるらしい。 Merb gets merged into Rails 3! by DHH (Rails 作者) Rails And Merb Merge by Yehuda Katz (Merb 主任開発者) Rails and Merb core team working together on their next release by …

Merb 1.0.6.1 リリース

Merb 1.0.6.1 がリリースされました。1.0.5 が出て、すぐに 1.0.6 が出て、さらに 1.0.6.1 が出たそうです。

Extlib は DataMapper 由来

しかしながら、extlib という名前は一般的すぎていささか池沼な香りがするし、せめて merb-extlib にして欲しいと思うのが人情であるが、実際は両方の gem が存在する。なるほど、いよいよ自分の愚かさに気付いて、extlib -> merb-extlib に変名したのかと思…

MerbDay の動画

MerbDay というイベントが先日アトランタであったらしい。その動画が公開されてる。なんかやたら解像度が高くて、プレゼン画面の文字がクッキリハッキリみえる。どうしてこんなに解像度が高いのだろうか。ちなみに、動画のリスト。 Keynote (by Yehuda Katz,…

DataMapper で「Unknown column 'XXX_id' in 'field list'」というエラーが出たとき

たとえば Book : Author が Many to Many の関係だったとする。このとき「Book.first.authors」を実行すると、「Unknown column 'author_id' in 'field list'」というエラーが出た。 $ merb -i irb> Book.first.authors ~ SELECT `id`, `title`, `author_id`…

DataMapper での 1+N 問題

DataMapper では、いわゆる 1+N 問題は起こらないと言われている。たとえば次のような例。ActiveRecord なら 1+N コの SELECT 文が発行されるけど、DataMapper では 1+1 コの SELECT 文だけを発行する。 $ merb -i irb> IRB.conf[:MAIN_CONTEXT].echo = fals…

DataMapper が予想以上に賢すぎる

なんか DataMapper が予想以上に賢かったので紹介してみる。 $ merb -i ### IRB のエコーバックをオフにする irb> %w[a] # エコーバックされる => ["a"] irb> IRB.conf[:MAIN_CONTEXT].echo = false irb> %w[a] # エコーバックされないことを確認 ### すべて…

Ruby 1.9 でアプリケーションが速くなるとしたら

個人的には、Ruby 1.9 を使っても業務アプリケーションや Web アプリケーションはそう速くはならないと思ってる。少なくとも、自分のプログラムでベンチマークした限りではそうだった。Ruby 1.9 による高速化の恩恵を受けるのは、数値計算を多用するようなプ…

書籍『Merb in Action』の第 1 章が無料配布中

共著者に Merb 開発者が含まれている書籍『Merb in Action』の "Section 1. Introducing Merb" が PDF で無料ダウンロードできる。 といっても Merb の概要を紹介しているだけなので、別に読まなくてもいいかも。書籍自体まだ 1/3 くらいしか書かれてなくて…

1 つのフォームで複数のモデルオブジェクトを使う

1 つのフォームで複数のモデルオブジェクトを使いたい場合、Merb では「text_field :mail」のようには書けず、「text_field :name=>"user[#{user.id}][mail]"」のように手動で name 属性を指定しないといけない。たとえば: <% @users.each do |user| %> <% …

「FATAL: Could not bind to 4000」と言われて Merb が起動できない場合

症状:「FATAL: Could not bind to 4000」と言われて、Merb が起動できない。原因:すでに別の Merb が起動しているか、前に起動したときの worker process が終了されていない。対処:4000 番ポートを使っている process を lsof で見つけ、kill する。 $ m…

Merb のバージョンを更新すると起動しない場合

Merb を新しいバージョンにして起動すると、次のようなエラーがでる場合がある。 ~ FATAL: The gem merb-action-args (= 1.0.2, runtime), [] was not foundこの場合は、config/dependencies.rb に書かれてあるバージョンを書き換えてやるとよい。 merb_gems…

DataMapper で relation を使った検索

ドキュメントに載ってないことを補足していこうシリーズ。DataMapper で、たとえば次のようなモデルクラスがあるとする。 ### 従業員 class Employee include DataMapper::Resource property :id, Serial property :name, String, :nullable => false proper…

DataMapper 0.9.8 がリリースされてあのバグが修正された

DataMapper 0.9.8 がリリースされました。 DataMapper 0.9.8 and Extlib 0.9.9 Released DataMapper 0.9.8 and Extlib 0.9.9 are out! Lazy loading が有効になっている場合にデータを更新しても保存されなかったバグが修正されました。もう :lazy => false …

ゴスリングだって間違える

Java の父と言われる Gosling。業界内では超有名人。 そんな彼でも、間違えることはあるさ。 -- 一部では"JavaはすでにCOBOLのようなレガシーに近い"という声も上がっていますが…。その意見にはまったく賛同しかねるね。そういうことを一部のRubyユーザなど…

アスペルガーな人は、コンピュータのような人

「Aさん」の「A」って、アスペルガーの「A」だよね? 4)Aさんに接するとき、留意すべき点はありますでしょうか。Aさんは、コンピューターのような人だと理解し、接するのが適切です。この言い方(コンピューターのような人)は、時に差別的だなどと非難を受け…

DataMapper で関連オブジェクトを更新する方法

DataMapper で関連オブジェクトを更新する方法。 ## 部署オブジェクトを作成 dept = Department.create!(:name => "Sales") ## それを使って従業員オブジェクトを作成 emp1 = Employee.create!(:name => "John", :department => dept) emp2 = Employee.creat…

オープンソースで Merb の本を書いてみるプロジェクトのお知らせ

Merb コアチームメンバーの Matt Aimonetti が、オープンソースで Merb の本を書くことを発表しました。すでにある Life on the edge with Merb, DataMapper & RSpec に書き足すのではなく、スクラッチから書くことに決定しています。プロジェクトは始まった…

Ruby で複文を書く方法

Ruby では「( )」で複文が書けるそうな。 つまり、(statement; statement; statement) みたいなことができるらしい。 括弧の中で改行があるとそれは独立した式とみなされます。括弧の中でも改行はセミコロンを置いたのと同じ意味になります。 Re: 複数行にわ…

DataMapper での一意制約の指定方法

DataMapper で一意制約 (unique constraint) をつける方法がドキュメントに見つからないと思った人はおらんかー? DataMapper では、一意制約には :unique_index オプションをつければよい。 class Department include DataMapper::Resource property :id, S…

まつもとさんが RubyFlow デビュー

まつもとさんが RubyFlow デビューを果たした。内容はフクオカ Ruby 大賞についてなんだけど、これって日本以外からの応募も可能なんだろうか。rubyflow.com に投稿したからにはきっとそうなんだろう。優勝賞金 100 万円は、ドル換算で約 1 万ドル? 海外の人…

radio_button() で :checked => false が checked="false" になる

Merb では、radio_button() で :checked => false を指定すると checked="false" になってしまうので悲しい。 ## radio_button() では :checked=>false がサポートされない <%= radio_button :name=>"foo", :value=>"Y", :checked=>false %> #=> <input type="radio" name="foo" value="Y" checked="false" /> ## check_b…

DataMapper で Lazy loading していると UPDATE 文が実行されない

なんか DataMapper (0.9.7) でいやらしいバグに遭遇してしまった。 モデルオブジェクトを変更して save() を呼んでも、UPDATE 文が実行されない。 いろいろ試したところ、どうも lazy loading になっていると、UPDATE 文が実行されないようだ。 再現手順:ま…

よい上司や先生に出会うことは難しいです

世の中には 2 種類の人間がいる。自分の頭で考えることのできる人間と、自分の頭で考えることを放棄した人間だ。そして、自分の頭で考えることのできる人間にとって、考えることを放棄した人間が上司や先生になることは、大変たいへん不幸なことである。 彼…

Mac Ports の Ruby が遅かったのは修正されたみたい

MacPorts でインストールした Ruby は遅いらしいの続報。 Ruby port のバージョンがあがって、修正された模様。 手元の環境では、ruby@1.8.7-p72_1 だと問題があり、ruby@1.8.7-p72_2 だと修正されていた。 ### ruby port のバージョンを確認 $ port install…

Rubinius と MagLev が協力するみたい

Finally, we're delighted to be working with Gemstone to refactor the Rubinius kernel (the part written in Ruby), to allow using it as a shared component between Rubinius and their MagLev runtime. http://blog.engineyard.com/2008/11/17/rubin…

Engine Yard が Rubinius の開発支援を縮小

たぶん、昨今の金融危機がオープンソースに影響を与えた例。それも目に見えて。 Rubinius の作者である Evan Phoenix は、自身のブログで、Engine Yard が Rubinius の開発支援を縮小することを発表した。 There have been some sad developments within the…

Mercurial は差分を管理しているけど Git はしていないみたい

Introduction to Git (by Junio C Hamano) git-suty.git (岩松氏による資料) なんか、どうしても Git の動作がよくわからなかったんだけど、Git は差分を管理してなくて、各バージョンのファイルをすべてまるごと保存しているらしい。たとえば 5 MB の CSV …

Merb 1.0.0 でエラー

Merb 1.0.0 を新たにインストールした環境で merb を起動すると、こんなエラーが出た。 /usr/local/lib/ruby/gems/1.8/gems/dm-core-0.9.6/lib/dm-core/adapters/data_objects_adapter.rb:137:in `initialize': wrong number of arguments (8 for 1) (Argume…

ネットに自浄化作用なんてない

はてな取締役であるという立場を離れて言う。はてぶのコメントには、バカなものが本当に多すぎる。本を紹介しているだけのエントリーに対して、どうして対象となっている本を読まずに、批判コメントや自分の意見を書く気が起きるのだろう。そこがまったく理…