我正在努力让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设置为默认值,它当然有效......
是不是应该为我做这个魔法并使用正确的红宝石版本?
答案 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