9

我正在尝试让 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 设置为默认值,它当然可以工作......

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

4

3 回答 3

15

好的,看起来 POW 正在远离 RVM。

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

于 2012-04-14T17:20:10.950 回答
2

我已经通过在项目的根目录添加一个 .powrc 来对问题进行排序,代码如下

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

[编辑添加:这是在Pow 文档中推荐的]

于 2012-11-07T13:27:33.350 回答
1

这就是为我解决问题的方法:

rvm env -- `rvm current` > .powenv

您还可以创建一个rvm 挂钩如此处评论),以便在更改当前 ruby​​ 环境时自动切换 .powenv:

# ~/.rvm/hooks/after_use_update_powrc
对于 `ls ~/.pow/` 中的文件;做
  POW_LINK_TARGET=`readlink ~/.pow/$file`

  如果 [ `pwd` = $POW_LINK_TARGET ]; 然后
    rvm env -- ``rvm current`` > .powenv
  菲
完毕

不要忘记使其可执行:

chmod +x ~/.rvm/hooks/after_use_update_powrc

于 2012-11-06T11:48:08.433 回答