我正在尝试让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 compass
和gem 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 -v
和compass -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做类似的事情时,我从未遇到过这样的错误。
答案 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,但现在也可以这样做。