2012-10-01 135 views
0

我正在将应用程序从Rails 3.0.3升级到3.2.8。试图让资产预先编译。我得到这个输出:Rails 3.2.8 - 预编译资产失败

$ bundle exec rake assets:precompile 
/usr/local/rvm/rubies/ruby-1.9.2-p320/bin/ruby /usr/local/rvm/gems/[email protected]/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets 
rake aborted! 
no such file to load -- sass/rails/compressor 
    (in /home/danb/Documents/Projects/pier-admin/pier-admin/app/assets/stylesheets/application.css) 

Tasks: TOP => assets:precompile:primary 
(See full trace by running task with --trace) 
rake aborted! 
Command failed with status (1): [/usr/local/rvm/rubies/ruby-1.9.2-p320/bin/...] 

Tasks: TOP => assets:precompile 
(See full trace by running task with --trace) 

是相对较新的,我对这个问题是不知所措。我之前没有使用过资产,并且在升级过程中我尽量做到最低限度。该应用程序在开发中工作。任何帮助,将不胜感激。

资产组是:

group :assets do 
    gem 'sass' 
    gem 'coffee-script' 
    gem 'uglifier' 
end 

application.css只有

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*/ 

回答

1

的:资产组不会在生产安装,所以你很可能缺少这些宝石和耙失败。

一种选择是在开发时进行预编译,将文件提交到/ public并将它们推送到生产服务器。

另一种是在application.rb中像懒洋洋地初始化资产:

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    # Bundler.require(*Rails.groups(:assets => %w(development test))) 
    # If you want your assets lazily compiled in production, use this line 
    Bundler.require(:default, :assets, Rails.env) 
end 
+0

谢谢,芥兰!这清除了事情。我在开发中进行了预编译,并将它们推送到存储库,然后推送到服务器,一切正常。 –