2013-03-14 33 views
2

我最近在Heroku上遇到這個問題,似乎無法弄清楚如何糾正它。該應用程序是在Ruby 1.9.3上運行的Rails 3.2.x應用程序。它在本地運行良好,但在部署到heroku時,資產的預編譯階段會失敗。 heroku web動態堆棧是雪松。Heroku的預編譯失敗,咖啡欄-3.2.2

我已經在application.rb文件中設置了'config.assets.initialize_on_precompile = false'。

以下是部署時收到的錯誤。

Counting objects: 7, done. 
Compressing objects: 100% (4/4), done. 
Writing objects: 100% (4/4), 438 bytes, done. 
Total 4 (delta 3), reused 0 (delta 0) 

-----> Ruby/Rails app detected 
-----> Using Ruby version: ruby-1.9.3 
-----> Installing dependencies using Bundler version 1.3.2 
    Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment 
    Using rake (10.0.3) 
    Using i18n (0.6.4) 
    Using multi_json (1.6.1) 
    Using activesupport (3.2.12) 
    Using builder (3.0.4) 
    Using activemodel (3.2.12) 
    Using erubis (2.7.0) 
    Using journey (1.0.4) 
    Using rack (1.4.5) 
    Using rack-cache (1.2) 
    Using rack-test (0.6.2) 
    Using hike (1.2.1) 
    Using tilt (1.3.4) 
    Using sprockets (2.2.2) 
    Using actionpack (3.2.12) 
    Using mime-types (1.21) 
    Using polyglot (0.3.3) 
    Using treetop (1.4.12) 
    Using mail (2.4.4) 
    Using actionmailer (3.2.12) 
    Using arel (3.0.2) 
    Using tzinfo (0.3.35) 
    Using activerecord (3.2.12) 
    Using activeresource (3.2.12) 
    Using bcrypt-ruby (3.0.1) 
    Using coffee-script-source (1.5.0) 
    Using execjs (1.4.0) 
    Using coffee-script (2.2.0) 
    Using rack-ssl (1.3.3) 
    Using json (1.7.7) 
    Using rdoc (3.12.2) 
    Using thor (0.17.0) 
    Using railties (3.2.12) 
    Using coffee-rails (3.2.2) 
    Using orm_adapter (0.4.0) 
    Using warden (1.2.1) 
    Using devise (2.2.3) 
    Using jquery-rails (2.2.1) 
    Using pg (0.12.2) 
    Using bundler (1.3.2) 
    Using rails (3.2.12) 
    Using rubygems-bundler (1.1.1) 
    Using sass (3.2.6) 
    Using sass-rails (3.2.6) 
    Using uglifier (1.3.0) 
    Your bundle is complete! It was installed into ./vendor/bundle 
    Cleaning up the bundler cache. 
-----> Writing config/database.yml to read from DATABASE_URL 
-----> Preparing app for Rails asset pipeline 
    Running: rake assets:precompile 
    rake aborted! 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/coffee-rails-3.2.2/lib/rails/generators/coffee/assets/templates/javascript.js.coffee isn't in paths: /tmp/build_18zpsldi56ucr/app/assets/images, /tmp/build_18zpsldi56ucr/app/assets/javascripts, /tmp/build_18zpsldi56ucr/app/assets/stylesheets, /tmp/build_18zpsldi56ucr/vendor/assets/fonts, /tmp/build_18zpsldi56ucr/vendor/assets/javascripts, /tmp/build_18zpsldi56ucr/vendor/assets/stylesheets, /tmp/build_18zpsldi56ucr/vendor/assets/venera_images, /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/coffee-rails-3.2.2/lib/assets/javascripts, /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/jquery-rails-2.2.1/vendor/assets/javascripts 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/asset_attributes.rb:42:in `logical_path' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:160:in `find_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/index.rb:60:in `find_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/processed_asset.rb:111:in `block in resolve_dependencies' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/processed_asset.rb:105:in `each' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/processed_asset.rb:105:in `resolve_dependencies' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/processed_asset.rb:97:in `build_required_assets' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/processed_asset.rb:16:in `initialize' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:249:in `new' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:249:in `block in build_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:270:in `circular_call_protection' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:248:in `build_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/index.rb:93:in `block in build_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/caching.rb:19:in `cache_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/index.rb:92:in `build_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:169:in `find_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/index.rb:60:in `find_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/bundled_asset.rb:16:in `initialize' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:252:in `new' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:252:in `build_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/index.rb:93:in `block in build_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/caching.rb:19:in `cache_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/index.rb:92:in `build_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:169:in `find_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/index.rb:60:in `find_asset' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/static_compiler.rb:19:in `block in compile' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:219:in `block in each_logical_path' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:206:in `block (2 levels) in each_file' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:196:in `each' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:196:in `each_entry' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:204:in `block in each_file' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:203:in `each' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:203:in `each_file' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:217:in `each_logical_path' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/static_compiler.rb:18:in `compile' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:56:in `internal_precompile' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:70:in `block (3 levels) in <top (required)>' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:60:in `block (3 levels) in <top (required)>' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:23:in `invoke_or_reboot_rake_task' 
    /tmp/build_18zpsldi56ucr/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>' 
    Tasks: TOP => assets:precompile:primary 
    (See full trace by running task with --trace) 
    Precompiling assets failed, enabling runtime asset compilation 
    Injecting rails31_enable_runtime_asset_compilation 
    Please see this article for troubleshooting help: 
    http://devcenter.heroku.com/articles/rails31_heroku_cedar#troubleshooting 
-----> Rails plugin injection 
    Injecting rails_log_stdout 
    Injecting rails3_serve_static_assets 
-----> Discovering process types 
    Procfile declares types  -> (none) 
    Default types for Ruby/Rails -> console, rake, web, worker 

-----> Compiled slug size: 20.8MB 
-----> Launching... done, v25 

的Gemfile:

source 'https://rubygems.org' 

gem 'rails', '3.2.12' 
gem 'jquery-rails', '~> 2.2.1' 

gem 'rubygems-bundler', '~> 1.1.1' 
gem 'devise', '~> 2.2.3' 

group :development, :test do 
    gem 'sqlite3', '~> 1.3.7' 
    gem 'rspec-rails', '~> 2.13.0' 
    gem 'annotate', '~> 2.5.0' 
end 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '~> 3.2.6' 
    gem 'coffee-rails', '~> 3.2.2' 
    gem 'uglifier', '>= 1.3.0' 
end 

group :test do 
    gem 'capybara', '1.1.2' 
end 

group :production, :staging do 
    gem 'pg', '0.12.2' 
end 

# To use ActiveModel has_secure_password 
# gem 'bcrypt-ruby', '~> 3.0.0' 

# To use Jbuilder templates for JSON 
# gem 'jbuilder' 

# To use debugger 
# gem 'debugger' 

application.css

/* 
* This is a manifest file that'll be compiled into application.css, which will include all the files 
* listed below. 
* 
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. 
* 
* 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 . 
*= require_tree ../../../vendor 
*/ 

applcation.js

// This is a manifest file that'll be compiled into application.js, which will include all the files 
// listed below. 
// 
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. 
// 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// the compiled file. 
// 
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD 
// GO AFTER THE REQUIRES BELOW. 
// 
//= require jquery 
//= require jquery_ujs 
//= require_tree . 
//= require_tree ../../../vendor 

這是假設要在紅寶石1.9.3運行但我看到的/ tmp/build_18zpsldi56ucr /供應商/束/紅寶石/1.9.1/gems/在寶石路徑中。不知道這是否是問題。有沒有人在Heroku之前遇到過這個問題。謝謝。

+0

這一行你找到一個答案?我只是在這裏發佈了相同的問題http://stackoverflow.com/questions/19449363/heroku-coffee-rails-failure-in-asset-precompile並沒有答案 – theschmitzer 2013-10-20 13:28:29

回答

0

由於:assets組下的寶石沒有在生產中使用,因此應該將gem 'coffee-rails'線移到該組之外。

而且我認爲你需要在你的application.js *= require_tree ../../../vendor

+0

據我所知,Sprockets忽略CSS和JS文件管道。 ../../../vendor在那裏,因爲該目錄有js和css文件。 – 2013-05-19 15:18:48

+0

嘗試// = require_tree ../../../vendor/assets/javascripts/。 – 2013-05-19 23:34:50