2013-03-21 249 views
1

我在從較老的Rails 3.0項目升級到最新的Rails 3.2(Rails 4有點太鋒利)並且使用資產管道廣告。我已經成功地在像基金會這樣的寶石的新項目中使用了資產管道,但讓它在這個較舊的項目中工作似乎很困難,重複獲取Sprockets::FileNotFound錯誤。 gemfile正確地顯示資產組中的所有寶石。找不到文件'jquery',找不到'foundation'

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' 
.... 

注意,我通過移動:assets -group外jQuery的軌道來解決類似的錯誤Sprockets::FileNotFound: couldn't find file 'jquery',但是這不是應該的基礎如何,至少工作...

還有一個問題,我面對(並且可能是相關的)是rails g foundation:install不起作用,即使bundle install命令列出了正在使用的zurb-foundation gem(4.0.9)。

我試過比較一個剛剛生成的項目和我的當前項目一起使用基礎資產,但我似乎查看了升級後的Rails項目配置的差異,但Sprockets::FileNotFound: couldn't find file 'jquery'基礎仍然存在。

請注意,我已經看到了解決方案,建議將文件移動到您項目的vendor-文件夾中,但這不是我所追求的解決方案類型。我想充分利用資產管道,並儘可能保持項目清潔。

有什麼建議嗎?

+1

您是否嘗試將其他寶石(粉底,jqueryui)移出資產組? – mraaroncruz 2013-03-21 13:07:25

回答

2

我似乎找到了自己的答案...猜問這個問題讓我察覺新建項目和舊項目更好地之間的差異...

在application.rb中所述捆綁需要聲明不同從新建項目:

Bundler.require(:default, Rails.env) if defined?(Bundler)(舊)與Bundler.require(*Rails.groups(:assets => %w(development test))) if defined?(Bundler)(新)

我猜的差別需要,除了默認組的資產組需要在環境或者是開發或測試被包括在內。