当它们已经存在时,gulp-compass在PATH中请求Ruby和Compass

时间:2015-05-16 19:52:09

标签: bundler gulp compass gulp-compass

我正在尝试让gulp-compass在我的Debian linux上运行,但是收到一条错误消息,指出Ruby和Compass必须在路径中。对于Gulp来说,我是一个初学者,所以可能是我很愚蠢。

以下是我在运行我在Gulpfile中创建的任务时得到的确切错误消息:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: You need to have Ruby and Compass installed and in your system PATH for this task to work.

Process finished with exit code 1

我查看了其他类似的问题,建议您执行gem install compassgem install sass但似乎对我不起作用。

我的Gulpfile如下:

var gulp = require('gulp'),
compass = require('gulp-compass');

gulp.task('stylesheets', function(){
    return gulp.src('**/*.scss')
        .pipe(compass({
            config_file: './config.rb',
            css: 'css',
            sass: 'sass'
        }))
        .pipe(gulp.dest('css'));
});

我可以运行ruby -vcompass -v我可以看到这些正确地在我的路径中并且正在执行echo $PATH显示ruby绝对存在。

我想知道使用RVM安装ruby或者我使用Bundler在我的项目中安装gem这是一个问题。我的Gemfile如下:

source 'https://rubygems.org'
gem 'susy'
gem 'compass'
gem 'breakpoint'

我已经使用bundle install安装了宝石,并且还尝试了gulp-compass中的bundle_exec: true选项(虽然事实上我告诉我不知道这是不是Bundler专家的意思) 。我试过重新安装Ruby。

有没有人知道为什么我收到上述错误消息?在与Grunt做类似的事情时,我从未遇到过这样的错误。

1 个答案:

答案 0 :(得分:0)

我终于设法绕过了这个。我使用rvm implode卸载了RVM,然后使用常规apt-get install ruby再次安装了Ruby。

一旦我这样做,一切正常。我不得不对我的gulp文件做一个小调整,现在就是:

var gulp = require('gulp'),
compass = require('gulp-compass');

gulp.task('stylesheets', function(){
    console.log();
    return gulp.src('sass/**/*.scss')
        .pipe(compass({
            config_file: './config.rb',
            css: 'css',
            sass: 'sass'
        }))
        .pipe(gulp.dest('css'));
});

当目前的稳定版本(撰写本文时)为2.2.2时,我现在仍然坚持使用旧版本的Ruby(ruby 2.1.5p273),这并不是一个理想的理想选择。我宁愿使用RVM,但现在也可以这样做。