2012-04-14 41 views
9

我試圖讓Octopress(http://octopress.org/)工作,但我遇到了一些問題。 我使用POW(http://pow.cx/),它似乎沒有爲我加載正確的Ruby版本(使用RVM)。Pow,RVM和ZSH不能一起工作

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

在我.rvmrc文件我有這樣的:

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>' 

爲什麼使用1.9.3-P125它時,在指定1.9.2:rvm use 1.9.2 我在瀏覽器中訪問我的網站時出現此錯誤我的.rvmrc文件?如果我將默認設置爲1.9.2,它當然會起作用...

是不是應該爲我做這個魔術並使用正確的ruby版本?

+0

rbenv比rvm更清晰簡單。我所有與rvm共舞的舞蹈都不成功,但另一方面,rbenv只是簡單的作品。 – frp 2012-04-14 16:38:44

+0

檢查你是否有與bash相同的問題而不是zsh。 – frp 2012-04-14 16:43:54

+0

我在bash中試過,沒有區別。 – Linus 2012-04-14 16:54:53

回答

15

好的,好像POW正在遠離RVM。

我需要在我的項目root身份運行此得到它的工作: rvm env . -- --env > .powenv

+1

我只是試圖運行這個命令,但我得到一個錯誤--env'無法識別的命令行參數:'。 --env'(參見'rvm usage')'。這是正常的嗎? – 2012-10-29 16:17:05

+0

@YannickSchall我每週都使用這個命令,直到上週我升級了RVM,並開始看到這條消息。我認爲不知何故支持這個選項,但我找不到任何文件。 – jakeonrails 2012-11-06 04:46:31

+0

我已經用下面的代碼在項目的根目錄下添加一個.powrc來排序:if [-f「$ rvm_path/scripts/rvm」] && [-f「.rvmrc」];然後 來源「$ rvm_path/scripts/rvm」 來源「.rvmrc」 fi' – 2012-11-07 13:25:23

1

這就是解決了我的問題:

rvm env -- `rvm current` > .powenv

您還可以創建一個RVM鉤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

+0

嗨帕維爾,是否有區別'rvm env - \'rvm current \''和只是'rvm env'?簡單地執行'rvm env> .powenv'對我來說工作得很好。 – 2013-05-12 14:36:08

+0

我還沒有嘗試過。這是我在某處閱讀併發布的內容,因爲它已被證實可以正常工作。但是您可以輕鬆測試並查看兩個命令的輸出是否有差異。 – 2013-05-14 12:36:21

+0

對我來說沒有區別,但也許在某些情況下可能會有所不同。 – 2013-05-14 12:51:08

2

我已經通過在項目的根目錄下面的代碼

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

添加.powrc排序的問題[編輯補充:這建議在Pow documentation]