2008-12-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…