2012-03-20 33 views
16

Trang web của tôi từng hoạt động và Heroku biên dịch trước tài sản và mọi thứ. Bây giờ, dường như không có nơi nào, tôi bắt đầu nhận được rake aborted! stack level too deep khi triển khai.tài sản cào: biên dịch trước không hoạt động trên heroku

Xóa dòng *= require_tree . từ file application.css tôi dường như để sửa chữa stack level too deep nhưng sau đó tôi nhận được điều này:

Running: rake assets:precompile 
(in /tmp/build_b8o2t4k8frce) 
/usr/local/bin/ruby /tmp/build_b8o2t4k8frce/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets 
(in /tmp/build_b8o2t4k8frce) 

Tất cả các liên kết của tôi để hình ảnh được chia (Tôi đang sử dụng hình ảnh-url() trong tệp css của tôi). Điều gì có thể là vấn đề và làm thế nào để sửa chữa nó?

Tôi đang sử dụng tuyết tùng chồng và đây là gemfile tôi:

gem 'rails', '3.1.0' 
gem 'rake', '0.8.7' 
gem 'devise' 

group :production do 
    gem 'pg' 
    gem 'thin' 
end 

group :assets do 
    gem 'sass-rails', " ~> 3.1.0" 
    gem 'coffee-rails', "~> 3.1.0" 
    gem 'uglifier' 
end 

Và đây là những phiên bản được sử dụng bởi Heroku:

Using rake (0.8.7) 
Using rails (3.1.0) 
Using sass (3.1.15) 
Using sass-rails (3.1.6) 

Dưới đây là tập tin application.rb tôi

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 

module App 
    class Application < Rails::Application 

    # Enable the asset pipeline 
    config.assets.enabled = true 

    # Version of your assets, change this if you want to expire all your assets. 
    config.assets.version = '1.0' 
    end 
end 

Và đây là tệp production.rb của tôi

# Full error reports are disabled and caching is turned on 
config.consider_all_requests_local  = false 
config.action_controller.perform_caching = true 

# Enable Rails's static asset server (Apache or nginx will not need this) 
config.serve_static_assets = true 

# Set expire header of 30 days for static files 
config.static_cache_control = "public, max-age=2592000" 

# Allow JavaScript and CSS compression 
config.assets.compress = true 

# Compress JavaScript by removing whitespace, shortening variable names, ... 
config.assets.js_compressor = :uglifier 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 

# Generate digests for assets URLs 
config.assets.digest = true 

Trả lời

34

Tôi gặp sự cố tương tự và tìm thấy câu trả lời ở đây: https://github.com/rails/sass-rails/issues/78. Về cơ bản, hạ cấp xuống sass-rails v3.1.4. Hy vọng điều này sẽ giúp

+5

Ồ, đúng rồi! Điều đó cố định nó! Vấn đề là, tôi là một newbie và tôi nghĩ rằng dòng này 'gem' sass-rails ', "~> 3.1.0" 'có nghĩa là phiên bản gem của tôi bị khóa nhưng hình như là băm nhỏ (hoặc bất cứ tên nào) đá quý được cập nhật.Và có lẽ đó là những gì đã xảy ra, có thể Heroku nội bộ đã thay đổi một cái gì đó và đột nhiên ứng dụng của tôi ngừng hoạt động. Những thứ thật kỳ lạ khiến tôi mất cả ngày không có gì. Đối với bất kỳ ai có thể kết thúc ở đây, giải pháp là thay đổi dòng đó thành 'gem' sass-rails ', "3.1.4" '. – Ashitaka

+0

Xin cảm ơn - Trợ giúp BIG - cùng một vấn đề, ngoài hư không. Đó là điều cuối cùng tôi cần thấy ngày hôm nay đã được đẩy đến heroku thất bại. – jpwynn

+0

Xin vui lòng, lấy upvote của tôi !! Cảm ơn! – hajpoj

1

Bạn không cần phải xóa số này *= require tree . từ application.css, coz nó tải tất cả các kiểu của bạn. chỉ cần thêm nó, và cấu hình tập tin config/production.rb của bạn như thế này:

config.assets.precompile = %w{application.js} 

và chạy RAILS_ENV tài sản = sản xuất rake: precompile

EDIT cố gắng sử dụng cấu hình này:

config.assets.digest = true 
+0

Vâng, điều này sẽ hoạt động với 'require_tree' nhưng nếu tôi thêm nó thì tôi sẽ nhận được' rake hủy bỏ! mức xếp chồng quá sâu'. Tôi không biết làm thế nào điều này xảy ra – Ashitaka

+0

Xin lỗi, tôi quên sao chép dòng cụ thể đó, tôi đã sử dụng thông báo. Tôi nhận thấy một cách giải quyết mặc dù tôi không thích nó nhiều – Ashitaka

0

Rõ ràng sass ngừng hoạt động và tôi hết kiên nhẫn nên tôi quyết định không sử dụng nó nữa. Thay vì làm điều này:

#theme.css.scss 
background-image:image-url('image.png'); 

Bây giờ tôi chỉ đơn giản là sử dụng một tập tin ERB:

#theme.css.erb 
background-image:url(<%= asset_path 'image.png' %>); 

tôi vừa mất cả ngày vì điều này và tôi không có ý tưởng tại sao bởi vì nó đã làm việc tốt chỉ ngày hôm qua . Nếu ai đó biết những gì gây ra điều này và làm thế nào tôi có thể sử dụng sass một lần nữa, xin vui lòng bình luận.

+0

Tôi nhận thấy trong một số môi trường sử dụng sass tôi nhận được lỗi nếu không có dấu cách giữa ':' và giá trị trong câu lệnh của tôi thay vì viết một cái gì đó như "background-image: image-url ('image.png') "; viết "background-image: image-url ('image.png')" [LƯU Ý KHÔNG GIAN SAU ": '] –

Các vấn đề liên quan