安装完罗盘后无法使用

28

使用这个Vagrantfile在Vagrant上似乎无法让罗盘(Compass)工作。查看这里使用的其余bash脚本(已删除repo)(如果您想为Vagrant Ubuntu Box进行配置,请参见Vaprobash!)。

因此,我正在学习gruntjs课程时,需要使用grunt server。唯一的问题是它需要更新的ruby版本(我认为是1.9+而不是1.8),还需要Compass。因此,通过安装RVM并安装最新的稳定版本来解决了ruby部分。应该很容易获得Compassgem install compass,而且它似乎已经安装好了。但是当我输入compass -v时,我遇到了以下错误:

/home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- sass/script/node (LoadError)
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches/browser_support.rb:1:in `<top (required)>'
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches.rb:2:in `block in <top (required)>'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches.rb:1:in `each'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches.rb:1:in `<top (required)>'
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/lib/compass/sass_extensions.rb:9:in `<top (required)>'
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/lib/compass.rb:5:in `block in <top (required)>'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/lib/compass.rb:4:in `each'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/lib/compass.rb:4:in `<top (required)>'
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/bin/compass:20:in `block in <top (required)>'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/bin/compass:8:in `fallback_load_path'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/gems/compass-0.12.2/bin/compass:19:in `<top (required)>'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/bin/compass:23:in `load'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/bin/compass:23:in `<main>'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `eval'
    from /home/vagrant/.rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `<main>'

除了错误提示缺少文件之外,我不确定出了什么问题。有人能给我一些提示,可能是什么问题吗?

.bash_profile 包含路径信息:

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

rvm -vruby -v 都能正常工作,安装了 gem install compasssass -v 似乎也能工作。

你可以使用 Vagrant 和 VirtualBox 复制所有内容。只需从上面提到的我的 GitHub 下载 Vagrantfile,再运行 vagrant up 命令即可。

2个回答

85

我在官方的compass Github问题页面上寻求帮助,并得到了解决这个问题的答案。

这个 GitHub 问题可以在这里找到。

如何解决:

在安装compass(v0.12.2)时,它将下载最新的sass v3.3.0.rc3(因为它是一个依赖项),但compass不能与最新的sass一起使用。你可以升级compass到最新的alpha版本(0.13.*),或者将sass降级到3.2.*。我选择了后者:

gem uninstall sass --version 3.3.0.rc.3
gem install sass --version 3.2.18
compass -v # Working :)

确保您使用的是已安装的版本。通过输入以下内容查找:

sass --version

我在尝试使用原始的Ruby安装在Mac OS X Mavericks上时遇到了非常类似的问题,这些步骤解决了它,谢谢! - jeromegamez
1
太好了!我已经找了一段时间了。顺便说一下,我在Ubuntu上! - Oumar

1

好的,所以我在新的Vagrant box provisioning之后按照每个步骤进行了操作,ls $GEM_HOME/wrappers/compass的输出为/home/vagrant/.rvm/gems/ruby-2.1.0/wrappers/compass。不确定该如何处理结果。当我使用compass -v时仍然会出现相同的错误。顺便说一下,我没有使用Codekit,如果你是这么想的话? - Ilyes512
尝试运行 /home/vagrant/.rvm/gems/ruby-2.1.0/wrappers/compass -v - mpapis
是的,我也尝试过了,并且得到了相同的结果。我还想说的是,我没有使用任何sudo,但是如果我运行sudo gem listgem list,我会得到2个不同的列表。然而,只有在没有sudo的列表中安装了Compass,所以这似乎是正确的。 - Ilyes512
那么您应该检查/home/vagrant/.rvm/gems/ruby-2.1.0/environment/home/vagrant/.rvm/gems/ruby-2.1.0/wrappers/compass两个目录,可能存在一个错误? - mpapis

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