2012-03-20 3 views
16

私のウェブサイトは正常に動作していましたが、Herokuは資産やすべてをプリコンパイルしていました。今や外見上どこからも外れて、私はrake aborted! stack level too deepを展開し始めました。私application.cssファイルから行*= require_tree .を削除rake assets:herokuでプリコンパイルが動作していません

stack level too deepを修正するようだが、その後、私はこれを取得:画像へ

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) 

すべての私のリンクが壊れている(私が)(画像のURLを使用しています私のCSSファイル)。何が問題になるのか、どのように修正するのですか?

私は杉スタックを使用していますし、これが私のgemfileです:

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 

そしてここでは、Herokuので使用されるバージョンです:

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

ここに私の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 

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 
です

これは私のproduction.rbファイルです

# 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 

答えて

34

私は同様の問題を抱えており、答えはここにあります:https://github.com/rails/sass-rails/issues/78。基本的には、sass-rails v3.1.4にダウングレードしてください。これがうまくいきたいです

+5

うわー、それだよ!それはそれを修正!物事は、私は初心者で、私はこの線 'gem 'sass-rails'、"〜> 3.1.0 "は、私の宝石のバージョンがロックされていたが、宝石は更新される。おそらくそれが起こったのだろう、おそらく内部的にHerokuは何かを変え、突然私のアプリは動作を停止した。私が何のためにも1日を失うようにした本当に奇妙なもの。ここで終わるかもしれない人にとっては、解決策はその行を 'gem 'sass-rails'、" 3.1.4 "'に変更することでした。 – Ashitaka

+0

ありがとう - BIGヘルプ - 同じ問題です。それが今日私が見なければならなかった最後のことは、ヒロクが失敗するのを押したことだった。 – jpwynn

+0

私のupvoteを取ってください!ありがとう! – hajpoj

1

この*= require tree .をapplication.cssから削除する必要はありません。すべてのスタイルを読み込みます。ちょうどそれを追加し、このようなあなたのconfig/production.rbファイル設定:

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

をし、RAILS_ENV =生産すくい資産を実行します。プリコンパイル

EDIT は、この設定を使用しよう:

どうやら
config.assets.digest = true 
+0

これは 'require_tree'でもうまくいくはずですが、追加すると' rake aborted!スタックレベルが深すぎる。どのように起こったのか分かりません – Ashitaka

+0

申し訳ありませんが、私はその特定の行をコピーするのを忘れました。私はすでにダイジェストを使用していました。私はそれが大好きではありませんが、回避策が見つかりました – Ashitaka

0

私は忍耐がなくなり、もう使用しないことにしました。それは昨日うまく働いていたので、私はちょうどこのために一日失われたと私は理由は分からない

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

:今、私は単純にERBファイルを使用しています

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

:代わりにこれを行うには。誰かがこれを引き起こしたことを知っていると私は再び嫌なことを使用することができます、コメントしてください。

+0

私はいくつかの環境で気づいたsassを使用して私は、 ':'と私のステートメントの値との間にスペースがない場合、 image-url( 'image.png') "; "背景画像:image-url( 'image.png')" [':'後のスペースに注意してください] –

関連する問題