我的网站曾经在工作,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())。可能是什么问题,我该如何解决?
我正在使用雪松堆栈,这是我的宝石文件:
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
答案 0 :(得分:34)
我遇到了类似的问题,并在此处找到答案:https://github.com/rails/sass-rails/issues/78。基本上,降级到sass-rails v3.1.4。希望这有帮助
答案 1 :(得分:1)
您不应该从application.css中删除此*= require tree .
,因为它会加载您的所有样式。只需添加它,并像这样配置config/production.rb
文件:
config.assets.precompile = %w{application.js}
并运行RAILS_ENV =生产佣金资产:预编译
修改强> 尝试使用此配置:
config.assets.digest = true
答案 2 :(得分:0)
显然sass停止了工作,我没有耐心,所以我决定不再使用它了。而不是这样做:
#theme.css.scss
background-image:image-url('image.png');
现在我只是使用erb文件:
#theme.css.erb
background-image:url(<%= asset_path 'image.png' %>);
因为这件事我只是失去了一整天,我不知道为什么因为它昨天工作正常。如果有人知道是什么导致了这个以及如何再次使用sass,请发表评论。