compass-rails gem不能在heroku中运行?

Ell*_*iot 4 ruby ruby-on-rails heroku ruby-on-rails-3 compass-sass

我的gemfile最近升级了我的compass-rails gem.我开始收到以下错误(仅在heroku上生成 - 在本地工作正常),并且已经坚持了几个小时:

Completed 500 Internal Server Error in 14284ms
2012-09-03T20:53:25+00:00 app[web.1]: 
2012-09-03T20:53:25+00:00 app[web.1]: ActionView::Template::Error (File to import not found or unreadable: compass/css3.
2012-09-03T20:53:25+00:00 app[web.1]: Load path: Sass::Rails::Importer(/app/app/assets/stylesheets/application.css.scss)
Run Code Online (Sandbox Code Playgroud)

我认为问题的一部分必须在/ app/app /出现在这里的路径中 - 但我不明白为什么.当我将下面的罗盘配置更改为"资产/样式表"时,我仍然会在跟踪错误中看到/ app/app /.

production.rb:

  # Don't fallback to assets pipeline if a precompiled asset is missed
  config.assets.compile = false
Run Code Online (Sandbox Code Playgroud)

compass.rb

# Require any additional compass plugins here.
project_type = :rails
sass_dir = "app/assets/stylesheets"
Run Code Online (Sandbox Code Playgroud)

的Gemfile

group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'uglifier', '1.2.4'
  gem 'yui-compressor', '0.9.6'
  gem 'compass-rails'
end
Run Code Online (Sandbox Code Playgroud)

在我的application.css.scss文件中:

@import "compass/css3";
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在努力寻找我能找到的所有解决方案

什么东西伸出来?

Rim*_*ian 5

是的,将罗盘轨移出:资产有效,但不是理想的解决方案.

检查通过推送到heroku的输出我发现

Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
Run Code Online (Sandbox Code Playgroud)

但它正在本地编译

RAILS_ENV=production rake assets:precompile
Run Code Online (Sandbox Code Playgroud)

解决方案是在预编译资产时不实例化数据库.在config/application.rb中:

config.assets.initialize_on_precompile = false
Run Code Online (Sandbox Code Playgroud)

在compass-rails项目中查看此问题:

https://github.com/Compass/compass-rails/issues/19

  • 移动罗盘轨道的原因是:资产工作是因为Heroku正在尝试动态编译样式表,因为"rake assets:precompile"失败了.但是,它绝对只是一种解决方案--Rimian的解决方案使预编译工作,而且指南针应该保留在:assets组中. (2认同)