无法使指南针+守卫+萨斯工作

时间:2012-05-31 15:43:01

标签: ruby-on-rails ruby-on-rails-3 sass compass-sass guard

Rails 3.0.9。

在Gemfile中:

gem 'compass-rails' (1.0.1)
gem 'sass' (3.0.19)
...

group :development, :test do
  gem 'guard' (1.0.3)
  gem 'guard-sass' (0.6.0)
  ...
end

在此配置中,错误为:

ERROR: Sass > Syntax error: File to import not found or unreadable: compass.
              Load paths:
                /var/www/inbox/public
                /var/www/inbox/public/images
                /var/www/inbox/public/images/intro
                ...

(通常我可以看到指南针的路径丢失(即...ruby-1.9.3-p194-perf/gems/compass-0.12.1/frameworks/compass/stylesheets 那里),所以罗盘不会被加载,我不知道该做什么让它加载。

当我为guard-sass交换guard-compass时,错误是:

ERROR: Rails.root is nil! (RuntimeError)
/home/jkl/.rvm/gems/ruby-1.9.3-p194-perf/gems/sass-3.1.19/lib/sass/util.rb:370:in `rails_root'
/home/jkl/.rvm/gems/ruby-1.9.3-p194-perf/gems/sass-3.1.19/lib/sass/plugin/rails.rb:11:in `default_options'
/home/jkl/.rvm/gems/ruby-1.9.3-p194-perf/gems/sass-3.1.19/lib/sass/plugin/configuration.rb:33:in `options'
/home/jkl/.rvm/gems/ruby-1.9.3-p194-perf/gems/sass-3.1.19/lib/sass/plugin/compiler.rb:38:in `initialize'
/home/jkl/.rvm/gems/ruby-1.9.3-p194-perf/gems/sass-3.1.19/lib/sass/plugin.rb:63:in `new'
/home/jkl/.rvm/gems/ruby-1.9.3-p194-perf/gems/sass-3.1.19/lib/sass/plugin.rb:63:in `compiler'
/home/jkl/.rvm/gems/ruby-1.9.3-p194-perf/gems/sass-3.1.19/lib/sass/plugin.rb:120:in `options'
...

每当我更新guard-livereload文件时,我希望.sass能够正常使用此功能。

注意,通常罗盘工作正常。在页面刷新时,正在从SASS文件生成新的CSS。

2 个答案:

答案 0 :(得分:2)

这是因为guard-sass硬编码仅将SASS导入路径导入当前目录的子目录(请参阅最新版本0.6.0中的https://github.com/hawx/guard-sass/blob/ac65c06fb0ea237713197730196d30ac47840bbf/lib/guard/sass.rb#L20),因此无法从Compass导入SASS(罗盘路径不在SASS的负载路径。

解决方法是覆盖:load_paths设置。我是这样做的:

  guard 'sass', 
    :input => 'app/assets/stylesheets', 
    :output => 'public/stylesheets', 
    :load_paths => Dir.glob(File.join(Gem.dir, "gems", "compass*", "frameworks/blueprint/stylesheets")) + Dir.glob(File.join(Gem.dir, "gems", "compass*", "frameworks/compass/stylesheets"))

或者只是升级到版本0.7+,其中不再需要上述内容。

答案 1 :(得分:0)

我最近在我的Rails 3.0.9项目上安装了guard-sass并遇到了同样的问题。 Pawel提供的答案对我没有帮助。然后,我意识到我不需要在我的开发服务器上使用guard,我只需要确保它在我的本地机器上安装时我处理样式和脚本所以我的Sass将成为CSS然后压缩CSS (Jammit)。

我所做的就是在我的Gemfile中的一个组中隔离我的守护宝石,如:

group :guard do
  gem 'rb-fsevent',   :require => false if RUBY_PLATFORM =~ /darwin/i # Installs fsevent if on a Mac
  gem "sass",         "~> 3.2.1"
  gem 'guard-sass',   "~> 1.0.0"
  gem 'guard-jammit'
end

然后我可以在终端窗口启动我的rails应用程序,并在另一个终端中保护。