“grunt compass”抛出错误,表示它不在系统路径中。

5

我对使用grunt、compass和sass还比较陌生,无法正常运行。我的Redhat系统上安装了Drupal 7,在站点主题目录中尝试运行'grunt compass'时出现以下错误:

Running "compass:dist" (compass) task
Warning: You need to have Ruby and Compass installed and in your system PATH for this task     to work. More info: https://github.com/gruntjs/grunt-contrib-compass Use --force to continue.

Aborted due to warnings.

我已经安装了Grunt、Bower,并使用'bundle install'安装所需的gems。当我运行'gem list'时,得到以下结果:

bigdecimal (1.2.4)
breakpoint (2.0.7)
bundler (1.6.2)
bundler-unload (1.0.2)
chunky_png (1.3.1)
compass (0.12.6)
compass-normalize (1.4.3)
executable-hooks (1.3.1)
fssm (0.2.10)
gem-wrappers (1.2.4)
io-console (0.4.2)
json (1.8.1)
kss (0.5.0)
minitest (4.7.5)
psych (2.0.3)
rake (10.1.0)
rdoc (4.1.0)
ruby (0.1.0)
rubygems-bundler (1.4.3)
rubygems-update (2.2.2)
rvm (1.11.3.9)
sass (3.2.19)
test-unit (2.1.1.0)
zurb-foundation (4.3.2)

看起来我已经拥有了所有需要的宝石(gems)。然后我通过“echo $PATH”查看了我的路径设置,得到了以下内容:

/home/ec2-user/.rvm/gems/ruby-2.1.1/bin:/home/ec2-user/.rvm/gems/ruby-2.1.1@global/bin:/home/ec2-user/.rvm/rubies/ruby-2.1.1/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin:/home/ec2-user/.rvm/bin

我查看了路径,发现在 /usr/bin 中有 ruby2.0,在 /home/ec2-user/bin 中有 compass,因此这些安装似乎都在系统路径中。
当我从命令行运行 'ruby2.0' 时,会得到以下结果:
/usr/local/share/ruby/site_ruby/2.0/rubygems/ext/builder.rb:12:in `<class:Builder>':  uninitialized constant Gem::UserInteraction (NameError)
from /usr/local/share/ruby/site_ruby/2.0/rubygems/ext/builder.rb:10:in `<top (required)>'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/ext.rb:13:in `<top (required)>'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:1431:in `build_extensions'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/stub_specification.rb:60:in `build_extensions'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/basic_specification.rb:56:in `contains_requirable_file?'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:925:in `block in    find_inactive_by_path'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:924:in `each'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:924:in `find'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:924:in `find_inactive_by_path'
from /usr/local/share/ruby/site_ruby/2.0/rubygems.rb:185:in `try_activate'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:132:in `rescue in require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/user_interaction.rb:8:in `<top (required)>'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/config_file.rb:7:in `<top (required)>'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:1430:in `build_extensions'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/stub_specification.rb:60:in `build_extensions'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/basic_specification.rb:56:in `contains_requirable_file?'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:925:in `block in find_inactive_by_path'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:924:in `each'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:924:in `find'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/specification.rb:924:in `find_inactive_by_path'
from /usr/local/share/ruby/site_ruby/2.0/rubygems.rb:185:in `try_activate'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:132:in `rescue in require'
from /usr/local/share/ruby/site_ruby/2.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from <internal:abrt_prelude>:2:in `<compiled>'

当我运行简单的“ruby”时,什么都不会发生。 “grunt compass”是否在寻找“ruby”,而我却有“ruby2.0”?我需要用ruby -> ruby2.0创建符号链接吗?

当我从命令行运行“compass”时,我得到:

使用方法:compass help [command]

Description:
  The Compass Stylesheet Authoring Framework helps you
  build and maintain your stylesheets and makes it easy
  for you to use stylesheet libraries provided by others.

等等。

非常感谢您的意见。


1
请确认一下,当您在Grunt之外使用Compass时,它是否正常工作?您能够进行观察/编译等操作吗? - cimmanon
我能够运行'compass watch',并且样式表被覆盖了。但是,我得到了以下错误:在/home/ec2-user/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/tempfile.rb的第["146"]行上发生Errno::EACCES错误:拒绝访问@rb_sysopen - /var/www/html/drupal/sites/all/themes/theme_name/assets/css/site_styles.css20140430-4672-pmg71i。 - spinsheet
3个回答

1

我已经对此进行了一些研究,以下内容对我有效...

如果您有一个通过CLI安装了Ruby和Compass的Windows版本,则尝试以下操作:

  • 控制面板>系统>高级系统设置
  • 高级>环境变量
  • 在系统变量下搜索具有值的“path”变量
  • 最后点击编辑并在变量值的末尾添加;C:\Ruby193\bin

这应该可以解决问题。

请注意,;C:\Ruby193\bin是指在您的计算机上安装的Ruby>Compass。

如果您有Mac版本,则可能类似的修复版本适用于Mac,但我无法为您映射,一些谷歌搜索可能会有所帮助...


0

0

grunt compass寻找一个Ruby gem。在您的情况下,“compass -v”没有错误,所以compass部分运行正常。除此之外,它不依赖于Ruby的任何其他组件。

现在compass准备就绪,grunt compass还会寻找一个npm模块grunt-contrib-compass,您可以在package.json文件中找到相关引用。如果您执行npm install,则会安装此npm包,我认为这应该使grunt compass正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接