我的网站以前一直正常运行,Heroku也预编译了所有的资源。但是现在,似乎突然间,在部署时出现了rake aborted! stack level too deep
错误。
从我的application.css文件中删除*= require_tree .
这一行似乎可以解决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())。可能的问题是什么,如何解决?
我正在使用cedar stack,这是我的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
gem 'sass-rails', "~> 3.1.0"
意味着我的 gem 版本已被锁定,但显然这个波浪符号(或者叫它什么名字)允许 gem 被更新。也许就是这个原因,内部的 Heroku 改变了一些东西,突然间我的应用程序停止工作了。真的很奇怪,这让我白白浪费了一整天时间。对于任何可能会来到这里的人,解决方案是将那一行改为gem 'sass-rails',"3.1.4"
。 - Ashitaka