3

我的应用程序在 compass 和 sussy 用于 haml 和 scss 的开发环境中运行良好,并且该应用程序的 Gemfile 配置是 -:Gist for Gemfile

我的 application.rb 设置看起来像这样-:

if defined?(Sass)
 config.sass.load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"
 config.sass.load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/blueprint/stylesheets" 
 config.sass.load_paths << "#{Gem.loaded_specs['compass-susy-plugin'].full_gem_path}/sass"
end
 config.assets.precompile << /(^[^_]|\/[^_])[^\/]*/

但是当我将我的应用程序部署到服务器时。这是在暂存环境中。总是向我抛出错误-:

Error compiling asset application.css:
    Sass::SyntaxError: Undefined variable: "$base-font-size".
    (in /var/www/App-staging/releases/20120405100127/app/assets/stylesheets/_mobile-first.scss)
    Served asset /application.css - 500 Internal Server Error

如果我尝试提供的一些技巧和补丁会给我错误-:

Compiled application.css  
Completed 500 Internal Server Error in 419ms

ActionView::Template::Error (File to import not found or unreadable: compass/css3/.
Load path: Sass::Rails::Importer

那么这是 Compass 和 rails 版本的问题吗?回答是否有任何永久解决方案可以摆脱这个或任何用于登台和生产环境的工作配置。感谢帮助。

4

2 回答 2

1

确保使用导入 SASS 文件

"import _mobile-first";

此外,在 rails 3.1 中,正确的文件名是

mobile_first.css.erb.scss

注意:您不需要前导下划线。

这将允许您使用 scss 导入导入文件,同时仍使用 erb 使用资产路径帮助程序插入资产。

<%= asset_path 'twitter.png' %>

您正在使用旧版本的指南针 gem。升级到 0.12.1。

如果这仍然不起作用,请尝试从 application.rb 中删除这些行

if defined?(Sass)
 config.sass.load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"
 config.sass.load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/blueprint/stylesheets" 
 config.sass.load_paths << "#{Gem.loaded_specs['compass-susy-plugin'].full_gem_path}/sass"
end

你不需要它们。没有它们,该应用程序将运行良好。我从来不需要将这些行添加到 application.rb

如果这仍然不起作用,请删除以下行并尝试。

 config.assets.precompile << /(^[^_]|\/[^_])[^\/]*/

如果这仍然不起作用,您可以发布 mobile_first.scss 和 application.scss 的内容吗?

于 2012-04-15T18:28:03.017 回答
0

您确定您的部署脚本正在调用 assets:precompile 并将 RAILS_ENV 设置为 staging ,如下所示:

bundle exec rake assets:precompile RAILS_ENV=staging

你能在你的开发机器上运行上面的命令吗?

于 2012-04-14T20:37:01.057 回答