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