Pow,RVM和ZSH没有合作

时间:2012-04-14 15:47:10

标签: ruby rvm zsh rack-pow

我正在努力让Octopress(http://octopress.org/)工作,但我遇到了一些问题。 我正在使用POW(http://pow.cx/),它似乎没有为我加载正确的Ruby版本(使用RVM)。

它始终使用RVM默认ruby版本,而不是.rvmrc中指定的版本。我在RVM中的默认Ruby版本是:ruby-1.9.3-p125。

在我的.rvmrc文件中,我有:rvm use 1.9.2 访问我的网站时,我在浏览器中收到此错误:

LoadError: cannot load such file -- bundler/setup
~/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
~/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
~/Sites/Lejnus/lejnus/config.ru:1:in `block in <main>'
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/builder.rb:4:in `instance_eval'
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/builder.rb:4:in `initialize'
~/Sites/Lejnus/lejnus/config.ru:1:in `new'
~/Sites/Lejnus/lejnus/config.ru:1:in `<main>'
~/Library/Application     Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:50:in `eval'
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:50:in `load_config'
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:43:in `initialize'
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:13:in `new'
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:13:in `run'
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/bin/nack_worker:4:in `<main>'

为什么在我的.rvmrc文件中指定1.9.2时使用1.9.3-p125?如果我将1.9.2设置为默认值,它当然有效......

是不是应该为我做这个魔法并使用正确的红宝石版本?

3 个答案:

答案 0 :(得分:15)

好吧,好像POW正在离开RVM。

我需要在我的项目root中运行它以使其正常工作: rvm env . -- --env > .powenv

答案 1 :(得分:2)

我通过使用以下代码在项目的根目录添加.powrc来对问题进行排序

if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".rvmrc" ]; then
  source "$rvm_path/scripts/rvm"
  source ".rvmrc"
fi

[已编辑添加:建议Pow documentation]

答案 2 :(得分:1)

这就解决了我的问题:

rvm env -- `rvm current` > .powenv

您还可以创建 rvm hook as commented here),以便在更改当前ruby env时自动切换.powenv:

# ~/.rvm/hooks/after_use_update_powrc
for file in `ls ~/.pow/` ; do
  POW_LINK_TARGET=`readlink ~/.pow/$file`

  if [ `pwd` = $POW_LINK_TARGET ]; then
    rvm env -- ``rvm current`` > .powenv
  fi
done

不要忘记让它可执行:

chmod +x ~/.rvm/hooks/after_use_update_powrc