1

古いRails3.0プロジェクトから最新のRails3.2(Rails 4は少しエッジが効いています)にアップグレードして、宣伝どおりにアセットパイプラインを使用するのに問題があります。ファウンデーションのような宝石を使った新しいプロジェクトでアセットパイプラインをうまく使用しましたが、この古いプロジェクトでアセットパイプラインを機能させるのは難しいようで、繰り返しSprockets::FileNotFoundエラーが発生します。gemfileには、アセットグループ内のすべてのgemが正しく含まれています。

source 'http://rubygems.org'

gem "rails", "~> 3.2.13"

... database gems ...
gem 'nokogiri'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'compass-rails'
  gem 'uglifier', '>= 1.0.3'
  gem 'zurb-foundation', '~> 4.0.0'
  gem 'jquery-ui-rails'
end
gem 'jquery-rails'
....

Sprockets::FileNotFound: couldn't find file 'jquery'jquery-railsを-groupの外に移動することで同様のエラーを解決したことに注意してください。ただし:assets、少なくともファンデーションが機能するはずの方法ではありません...

私が直面している(そして関連しているかもしれない)もう1つの問題は、 gem(4.0.9)が使用されていることをコマンドがリストしているrails g foundation:installにもかかわらず、機能しないことです。bundle installzurb-foundation

ファウンデーションアセットで動作する新しく生成されたプロジェクトを現在のプロジェクトと比較しようとしましたが、アップグレードされたRailsプロジェクトの構成の違いを確認しているようですが、ファウンデーションは保持されていますSprockets::FileNotFound: couldn't find file 'jquery'

ファイルをプロジェクトのフォルダーに移動することを提案するソリューションを見てきましvendorたが、それは私が求めているタイプのソリューションではないことに注意してください。アセットパイプラインを最大限に活用し、プロジェクトを可能な限りクリーンに保つように努めたいと思います。

助言がありますか?

4

1 に答える 1

2

私は自分で答えを見つけたようです...質問をすることで、新しく作成されたプロジェクトと古いプロジェクトの違いをよりよく見つけることができたと思います...

application.rbで、Bundlerrequireステートメントは新しく作成されたプロジェクトとは異なります。

Bundler.require(:default, Rails.env) if defined?(Bundler)(古い)対Bundler.require(*Rails.groups(:assets => %w(development test))) if defined?(Bundler)(新しい)

違いは、環境が開発またはテストのいずれかである場合、デフォルトのグループに加えてアセットグループを含める必要があることを意味すると思います。

于 2013-03-21T13:08:08.577 に答える