Culerity 與 RVM 整合
如果您希望在 Culerity 中使用基於 rvm 的 ruby 和 jruby,請按照下列步驟進行。請注意,第一組說明目前仰賴您使用最新版本。
設定 jruby
在開始之前,您需要安裝 jruby 和 celerity。簡而言之,您需要
- 安裝 jruby
- 建立 celerity gemset 並使用它
- 在此 gemset 中安裝 celerity gem
rvm install jruby
rvm use jruby@celerity --create
gem install celerity culerity
完成後,您應該可以透過執行以下動作確認您擁有 celerity
gem list | grep celerity
完成後,下一個關鍵步驟是為其設定包裝器。為此,我們執行
rvm wrapper jruby@celerity celerity jruby
現在可以透過 .bash_profile 或類似的環境變數設定 culerity 的路徑
export JRUBY_INVOCATION="$(readlink "$(which celerity_jruby)")"
這應該會建立 ~/.rvm/bin/celerity_jruby 檔案,指向正確的 ruby。您可以透過執行以下動作來驗證
celerity_jruby -S gem list | grep celerity
假設這是正確的,您可以繼續執行下一步。
設定 Culerity 以使用您的 jruby Celerity
產生包裝器後,您的下一個任務是告訴 Culerity 使用哪個 jruby。如果您使用的是最新版本,您會將下列程式碼片段新增至專案的 features/support/env.rb 檔案
Culerity.jruby_invocation = File.expand_path("~/.rvm/bin/celerity_jruby")
如果失敗,請將 ~/.rvm/bin 替換為您的終端機上顯示的「echo $rvm_bin_path」(感謝 Matt Patterson 在 Culerity 方面讓這一點更清楚)。
在較舊版本的 Culerity 中,您需要手動指定掛鉤以切換 env。為此,您需要先取得 jruby 包裝器目錄的位置。若要找出此位置,請在您的終端機中執行下列動作並記住輸出
dirname "$(readlink "$(which celerity_jruby)")"
這應該會回傳類似於「/Users/sutto/.rvm/wrappers/jruby-1.5.1@celerity」的範例。接下來,您需要建立 features/support/culerity-hooks.rb,其中包含下列程式碼(感謝 agibralter、mchung 和 ashleymoran)
# culerity-hooks.rb Before("@culerity,@celerity,@javascript") do |scenario| unless @original_path && @rvm_jruby_path @original_path = ENV['PATH'] @rvm_jruby_path = "/Users/sutto/.rvm/wrappers/jruby-1.5.1@celerity:" end ENV['PATH'] = @rvm_jruby_path end After("@culerity,@celerity,@javascript") do |scenario| ENV["PATH"] = @original_path end
請務必將「/Users/sutto/.rvm/wrappers/jruby-1.5.1@celerity」替換為您先前記下的值。
社群資源
- Matt Patterson 在 Google Groups 貼文中 宣告他已發布改善支援的修補程式。
- 上述這些 超讚的掛勾 展示了 RVM 資訊的正確腳本用法,正如預期,agibralter 做得超棒。 ashleymoran 的修正 - 最初的建議解決方案
- 原始 gist by mchung