2011-11-28 70 views
2

我的同事有一個使用Nginx,Phusion Passenger和RVM的Rails開發環境。當他嘗試加載一個項目時,它抱怨需要不同版本的Ruby的比什麼是可用:如何讓Phusion Passenger使用正確版本的Ruby?

The given ruby environment requires ruby-1.9.2-p290 (versus ree-1.8.7-2011.03) (RVM::IncompatibleRubyError) 

我們從稀土切換到MRI紅寶石。以下是我目前檢查的內容:

  • .rvmrc在該目錄中是rvm use --create [email protected]
  • rvm list default回報ruby-1.9.2-p290
  • 我們改變了出來,放回目錄,發現它說,它的使用1.9.2
  • 爲nginx的配置文件設置passenger_rootpassenger_ruby正確的,據我可以告訴
  • Passenger已經用Ruby 1.9.2編譯。

還有別的東西我失蹤了嗎?

+0

這個問題最終導致他的設置非常具體,以至於我懷疑這對其他人有用。由於我不能再刪除它,所以我投票決定將它關閉爲「太本地化」。 –

+0

是的,但評論指出做文檔仍然有效:) – Ghoti

回答

0

乘客必須使用特定版本的Ruby進行編譯,並鎖定到從那一點開始。您不能在RVM中切換它,也不能通過passenger-install-X-module方案運行。

+0

好抓,但我錯了 - 乘客已與Ruby 1.9.2編譯。更新的問題。 –

1

嘗試閱讀文檔?

https://www.phusionpassenger.com/documentation_and_support#documentation

通過指定--passenger您RVM命令中使用的包裝,並告訴Apache或Nginx的使用它生成的包裝。 Ruby不是'編譯'的。

這隻會給你一個rvm實例,但它會工作。

對於多臺RVM,我唯一能找到的解決方案是使用Unicorn和反向代理來運行獨角獸進程。獨角獸可以適當擴展,並且是一個長大的unix公民 - 這正是我個人用於製作的東西。

編輯 - 剛剛注意到Passenger 3對RVM友好一些(如上面的文檔中給出的那樣) - 但是你仍然必須運行一個包裝器。

在Mac上,對於開發者來說,37信號有一個稱爲POW的替代方案,它允許對開發環境進行簡單的配置。

+1

鏈接已更新爲指向新網站 – Ghoti

0

如果你真的想使用不同的紅寶石並且尊重RVM,請使用apache +獨角獸。爲apache安裝mod_proxy和mod_rewrite模塊,使用unicorn.conf設置unicorn_rails並運行'unicorn_rails -E production -D -c config/unicorn.conf'。這是假設你把獨角獸的配置放在rails應用程序的配置目錄中。

相關問題