1

RoRアプリケーションでSpreeを使用しようとしています。わかりました。何かをカスタマイズしたいときは、公式WebサイトにあるすべてのガイドとFAQに従います。それは大丈夫です、そしてそれで問題はありません。手がかりを見つけることができなかった1つの質問-apps/view、apps / modelsフォルダーに何もないが、それはまだ機能しているということは、どうして可能ですか?つまり、はい、これらのフォルダーに何かを作成して、ビューの動作を再定義することができます(実際、これはカスタマイズの方法の1つです)が、内部を本当に理解したいと思います。私はRailsにかなり慣れておらず、従来のappフォルダー構造に慣れています。

4

1 に答える 1

3

あなたが気になっているのは、Rails Engine の魔法です。

Ruby on Rails を使用すると、エンジンを定義でき (アプリもその 1 つです)、ビュー/コントローラーなどを検索すると、マウントされたすべてのエンジンが検索パスの一部になります。

したがって、ビューは Spree gem の内部にあり、あなたには見えませんが、それでもそこに見えます。ビューフォルダーに同じ名前の何かを入れると、Gem にある Rails エンジンのビューよりも優先されます。

エンジンが Rails でどのように機能するかについての良いガイドは次のとおりです。

http://edgeguides.rubyonrails.org/engines.html

これらのエンジンの良い例の 1 つは、おそらくアプリケーション内で使用する jQuery-rails Gem です。コードはまったくありません (アセット パイプラインを持たない Rails 3.0 以下のフォールバックを除く) が、app/assets/javascripts フォルダーに jQuery.js ファイルがあります。エンジンはロード パスにあるため、そこにあるアセットを要求できます。エンジン自体は、アプリと同じフォルダー構造を持っています ( app/views, app/controllers...)

ここで Spree の内部構造を見ることができます: https://github.com/spree/spree/tree/master/core/app

于 2013-01-31T19:54:28.117 に答える