私は.NET開発者で、今週末にRuby on Railsで遊ぶ機会がありました。
.NETでは、個別のクラスライブラリプロジェクトを作成することにより、アプリケーションのレイヤーを分離します。設計パターンの観点から、Railsでもそれを行う必要がありますか、それともすべてが含まれる1つのプロジェクトだけですか?
私は.NET開発者で、今週末にRuby on Railsで遊ぶ機会がありました。
.NETでは、個別のクラスライブラリプロジェクトを作成することにより、アプリケーションのレイヤーを分離します。設計パターンの観点から、Railsでもそれを行う必要がありますか、それともすべてが含まれる1つのプロジェクトだけですか?
回答:
Railsアプリは単一のリポジトリとして起動することがわかります。より成功したもの(Twitter、Square、その他多く)は、要件に合わせて複数のコードベースに分割されました。これらの追加のコードベースは、daemon、services、gems、Rails Enginesなどです。
YAGNIであるため、複数のプロジェクトへのこのリファクタリングは、必要になるまで行われません。1日目にプロジェクトを分岐すると、プロトタイピング時間が遅くなります。プロトタイピングの速度はRubyとRailsの重要な強みです。Rubyでクラスを作成したり、Rubyでクラスを作成したりすることは、コストがほとんどかからないことを念頭に置いておく必要があります。あなたの純粋なRubyのコードは、ほとんどの下で暮らすます/app/
(app/models
、app/views
app/controllers
、app/helpers
)と/lib/
。静的アセット、階層化されたJS / Coffeeインクルード、CSS / Sass / etcインクルードはになります/app/assets
。
Rubyクラスを簡単に分解できる理由を理解するには、ダックタイピングについて少し読む必要があります。また、Rubyのインターフェースは、それほど動的ではない環境で慣れているほど堅固ではないという理解が必要です。
興味のあるリンクをいくつかご紹介します。
アヒルのタイピングの簡単な説明(Yehuda Katz blogpost)
読みやすく、理解しやすく、変更しやすいオブジェクト指向プログラムを設計する方法と理由に関する計り知れないサンディ・メッツ(2時間Ruby Roguesポッドキャスト)(彼女の素晴らしい本)
Railsの作成者であるDavid Heinemeier Hanssonがアセットパイプラインとそれが改善するコードレイアウトの問題について説明します(RailsConfキーノートビデオ)
独自のgemを作成する(Rubygems.org HOWTO)
あなたのプロジェクトで頑張ってください!
Rubyライブラリではgemと呼ばれます。http: //www.ruby-lang.org/en/libraries/を参照してください。これは.NETクラスライブラリとほぼ同じ方法で使用されます。