rake资产:预编译不在heroku上工作

我的网站曾经在工作,Heroku预编译资产和一切。 现在,似乎无处不在,我开始让rake aborted! stack level too deep rake aborted! stack level too deep在部署时rake aborted! stack level too deep

删除行*= require_tree . 从我的application.css文件似乎修复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) 

我所有的图像链接都被破坏了(我在我的css文件中使用了image-url())。 可能是什么问题,我该如何解决?

我正在使用雪松堆栈,这是我的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 

我遇到了类似的问题,并在此处找到答案: https : //github.com/rails/sass-rails/issues/78 。 基本上,降级到sass-rails v3.1.4。 希望这可以帮助

您不应该删除此*= require tree . 来自application.css,因为它加载你所有的样式。 只需添加它,并配置您的config/production.rb文件,如下所示:

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

并运行RAILS_ENV =生产佣金资产:预编译

编辑尝试使用此配置:

 config.assets.digest = true 

显然萨斯停止了工作,我没有耐心,所以我决定不再使用它了。 而不是这样做:

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

现在我只是使用erb文件:

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

我因此失去了一整天,我不知道为什么因为它昨天工作正常。 如果有人知道是什么导致了这个以及如何再次使用sass,请发表评论。