rails:103
From: Masayoshi Takahashi <maki@r...>
Date: Tue, 22 Mar 2005 03:43:25 +0900 (JST)
Subject: [rails:103] Re: railsコマンドでtemplate_class=メソッドが見つからない
高橋征義です。 akira yamada / やまだあきら <akira@a...> wrote: > Masayoshi Takahashi wrote: > > なお、DebianとRailsの情報については、 > > http://wiki.rubyonrails.org/rails/show/RailsOnDebian > > http://wiki.rubyonrails.org/rails/show/HowtoInstallCompleteRubyOnDebian > > http://wiki.rubyonrails.org/rails/show/RailsOnDebianUnstable > > などがあるようです。 > > どうしてDebianなのかよく分かってませんが > これらの情報はunstable環境については古くなってきています。 どうしてDebianなのかは、たださんが[rails:91]で、 TADA Tadashi <sho@s...> wrote: > 環境はDebian sargeです。 と書いていたからで……というのはさておき、Unstable環境の 話は上記の三番目のURLのページ冒頭で触れられている内容で 合ってますか? > > ↑この資料に従って説明をしたあと、どうしてRailsがこういう風になって > > いるのか(なぜData MapperパターンではなくActive Recordパターンを > > 使っているのか、なぜテンプレートエンジンではなく素のERbを使って > > いるのか、等々)、weblogやMLの情報を思い出しながら推測も交じえて > > しゃべってきました。 > > 「どうして」から「交じえて」までの内容が気になります。 > どこかにレポートはありますかね? かずひこさんのメールにもありましたが、この辺はアドリブで しゃべっていたこともあり、私自身手元に記録がないのでした。 詳しいレポートもないようですね。 あやふやな記憶を頼りに箇条書にすると、 ・Ruby on Railsはとにかく「DRY(Don't Repeat Yourself)」が 重要とされている(トップページでもそう書いている)。 ・例えば、DBのスキーマに修正があった場合、設定ファイルも プログラムも修正が入るようなものはDRYじゃないから駄目。 ・そのため、プログラムはDBのスキーマ情報を読みとって dynamicに変更されるべき。 ・でも、Data Mapperだと設定ファイルが必要なこともある。 DBのテーブルとObjectが1:NとかN:Mとかだと設定ファイルと プログラムをDBの変更に追随させることは困難。 ・そこで発想を転換する。Data MapperではなくActive Record にすれば、テーブルとObjectが1:1対応になるので問題は 解決する。 (Data MapperとActive RecordについてはPoEAA参照。) ・でも、テーブルとObjectを1:1にするのは可能か? --Web Applicationであれば、かなりの場合対応可能ではないか。 そもそもWebアプリは既存のDB設計に引きずられにくい。 純粋なWebアプリではクラスもDBも新規に設計できるし、 バックエンドに基幹系があっても密結合は普通避けるはず (バッチかなにかを使って同期させるのであればそこで ギャップを吸収するとか)。もちろんそれでは駄目な場合も あるけど、2割:8割の法則は適用できそう。 ・だから、ActiveRecordは「あらゆるDBをあらゆる クラス構造にマッピングさせるためのツール」では ありえない。 ・それでも、RailsのActiveRecordは、PoEAAのそれよりリッチ。 テーブル間の関連なども表現できるし、before/afterで テーブル固有の処理も加えられる。 ・さらに、「Convetion Over Configuration」に基づけば、 設定を極限まで(場合によってはゼロにまで)減らせられる。 ・(もっとも、テーブル名の複数形の規約はどうかと思うけど) ・しかし、いつでもゼロになるわけではない。DBで全ての情報を 記述できるわけではない以上、それ以外の場所で設定を 記述する必要がある。 ・とはいえ、そもそもプログラムのコードが設定であるべき なのでは? ・しかし、通常のコードは設定ファイルほど見やすいもの とは言えない。 ・でも、Rubyなら設定みたいな見やすさでコードが書ける。 一種のDSL(Domain Specific Language)風味。 これはJavaなどの言語ではできない。言語重要。 ・だからJavaでRailsをやる試み(Trailsとか)は、Rails ほどは成功しない。また、S2Daoは、ActiveRecordほど 見やすくはなれない(Seasarの限界というより、Javaの 限界)。 ……といった感じだったはずです。 そういえば、これを書いて思い出しましたが、Railsでは 関数風メソッドをいろいろ使っていて、その「見やすさ」こそが Rubyの重要なメリットである、と認識しているような気がします。 例えば↓こういうの、ですね。 class Project < ActiveRecord::Base belongs_to :portfolio has_one :project_manager has_many :milestones has_and_belongs_to_many :categories validates_presence_of :name, :description validates_acceptance_of :non_disclosure_agreement validates_uniqueness_of :key end Ruby2.0の議論は追いかけきれていないのですが、こういうのに 「self.」をつける必要が生じるとすると、大問題になりそうです (私の誤解かもしれませんが……)。 高橋征義 (Masayoshi Takahashi) E-mail: maki@r... -- ML: rails@r... 使い方: http://QuickML.com/
91 2005-03-19 14:29 [sho@s... ] railsコマンドでtemplate_class=メソッドが見つからない 93 2005-03-19 20:22 ┣[moriq@m... ] 95 2005-03-20 10:42 ┃┣[sho@s... ] 115 2005-03-26 12:53 ┃┃┗[sho@s... ] 96 2005-03-20 00:29 ┃┗[sho@s... ] 97 2005-03-21 04:00 ┣[maki@r... ] 98 2005-03-21 04:17 ┃┣[kazuhiko@f... ] 102 2005-03-21 18:50 ┃┃┗[maki@r... ] 99 2005-03-21 04:20 ┃┗[akira@a... ] 101 2005-03-21 14:07 ┃ ┗[stoyan@g... ] Re: railsコマンドでtempl ate_class= メソッド=?UTF-8?Q?=E3=81=8C=E8=A6=8B=E3=81=A4=E3=81=8B?= らな い -> 103 2005-03-21 19:43 ┗[maki@r... ] 104 2005-03-22 00:11 ┗[matz@r... ]