2012-03-19 27 views
18

Trang web của tôi từng làm việc 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 thông báo này khi triển khai:"rake hủy bỏ! Stack cấp quá sâu" trong khi triển khai đến Heroku

Preparing app for Rails asset pipeline 
Running: rake assets:precompile 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets/icons 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets/icons 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
(in /tmp/build_31cexir1p9pwn) 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
rake aborted! 
stack level too deep 
(in /tmp/build_31cexir1p9pwn/app/assets/stylesheets/theme.css.scss) 

(See full trace by running task with --trace) 
Precompiling assets failed, enabling runtime asset compilation 
Injecting rails31_enable_runtime_asset_compilation 

Nó không thể biên dịch trước tệp css của tôi.

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 

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

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

Và đây là tập tin production.rb tôi

# Code is not reloaded between requests 
config.cache_classes = true 

# 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 

Bây giờ tất cả các liên kết của tôi để hình ảnh bị hỏng (Tôi đang sử dụng hình ảnh-url() trong tập tin css của tôi). Điều gì có thể là vấn đề và làm thế nào để sửa chữa nó?

+0

bạn sẽ có thể liệt kê tệp này, theme.css.scss. Dường như tràn với đường ống nội dung của bạn –

+1

Lỗi "mức chồng quá mức" là, trong trường hợp ứng dụng đang hết bộ nhớ. Nó thường là kết quả của các chương trình sử dụng rất nhiều đệ quy (các hàm tự gọi), và những thứ như các trình phân tích cú pháp (SASS tới CSS, CoffeeScript thành JS, ERB thành HTML) thường sẽ sử dụng đệ quy. Là một công việc xung quanh, hãy thử biên dịch trước các tài sản trước khi triển khai - bạn có thể có nhiều bộ nhớ hơn trên máy cục bộ của bạn so với trường hợp Heroku. –

+0

Đây là một lỗi khá nghiêm trọng. Bạn đã báo cáo về github? – jcollum

Trả lời

30

Tôi đã thực sự tuyệt vọng vì vậy tôi asked another question. Rõ ràng điều này là do sass và downgrading để sass-rails v3.1.4 v3.2.5 sẽ làm cho nó hoạt động.

+0

Điều này cũng phù hợp với tôi. Tôi là một chút kỳ lạ ra rằng điều này đã được một vấn đề cho điều này dài và sass-ray master vẫn gây ra vấn đề này. Ước gì tôi biết hàng loạt sự kiện đã gây ra nó: - \ –

0

hạ để Sass-ray v3.1.4 làm việc cho tôi :)

0

nâng cấp lên Sass v3.2.12 đã làm các trick cho tôi

nhưng tổng thể, có vẻ như vấn đề được cố định trên tất cả các phiên bản hiện tại , chỉ cần cập nhật gói và bạn nên làm tốt.

1

Đối với phiên bản 2.3.0 trở xuống ruby ​​có dòng sau trong ứng dụng.rb tệp cho Rails. Nhưng 2.4.0 hoặc cao hơn đã thực hiện chúng như tự động.

Bundler.require(*Rails.groups)

Thay đổi phiên bản Ruby thành 2.3.0. Điều này đã cứu ngày của tôi.

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