2012-02-13 26 views
6

私は既存のレール2アプリをレール3に更新しており、アセットパイプラインを理解する上で問題があります。私はguideを読んでいると私はそれを理解し、次のいずれかのディレクトリ内のファイルは/資産に解決されます:rails3アセットパイプラインとファイルの衝突

  • アプリ/資産
  • のlib /資産
  • ベンダー/資産

あなたはヘルパーを使用してそれらにアクセスできます... ie

image_tag('logo.png') 

しかし、私が理解していないことは、どのように衝突が処理されるかです。例えば、どのような次のファイルが存在する場合:

  • アプリ/資産/画像/ logo.png
  • のlib /資産/画像/ logo.png

私はmyappのために行く場合。 com/assets/images/logo.png、どのファイルが返されますか?私は自分のアプリ内で手動で衝突をチェックすることができましたが、これはアセットパイプラインに依存する宝石を使用する際には苦労します。

答えて

2

レールが最初に見つかったものだけを返すので、私が見つけたことに基づいて、ファイルを複製することはできません。宝石は、デカップリングモジュールにあなたのapp/assetsをなぜindex manifestを活用していない、自分の資産

+0

私は 'jqueryの-rails'宝石で束ねのjQueryを持っています。私のRailsプロジェクトの別の部分では、プロジェクトの残りの部分で 'jquery-rails'を放棄することなく、Bowerがフェッチした別のバージョンのjQueryを使いたいと思います。それを行う方法はありますか? –

0

を名前空間と整理しないかもしれないよう

これは、設計上の欠陥のビットのように思えますか?特定の画像(image_tag('admin/logo.png'))を参照して、より意味のある方法で組織されたUIコードベースを無料で入手できます。単一ページアプリケーションなどの複雑なコンポーネントを独自のモジュールに昇格させ、アプリのさまざまな部分から再利用することもできます。

のは、あなたのアプリが3つのモジュールの外に構成されて言ってみましょう:あなたのエージェントがあなたの会社の販売プロセスを追跡できるように公共側、管理UIと、例えば、CRM:

app/assets/ 
├── coffeescripts 
│   ├── admin 
│   │   ├── components 
│   │   ├── index.coffee 
│   │   └── initializers 
│   ├── application 
│   │   ├── components 
│   │   ├── index.sass 
│   │   └── initializers 
│   └── crm 
│    ├── components 
│    ├── index.sass 
│    └── initializers 
├── images 
│   ├── admin 
│   ├── application 
│   └── crm 
└── stylesheets 
    ├── admin 
    │   ├── components 
    │   └── index.sass 
    ├── application 
    │   ├── components 
    │   └── index.sass 
    └── crm 
     ├── components 
     └── index.sass 

21 directories, 6 files 

はしないでください更新することを忘れて、あなたのapplication.rbので、彼らが適切にプリコンパイルされます。

config.assets.precompile = %w(admin.js application.js crm.js 
           admin.css application.css crm.css)