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
culerity のパスは、.bash_profile またはその中に環境変数によって設定できます。
export JRUBY_INVOCATION="$(readlink "$(which celerity_jruby)")"
これにより、適切な ruby を指すファイル ~/.rvm/bin/celerity_jruby が作成されます。次の操作を実行して確認できます。
celerity_jruby -S gem list | grep celerity
これが正しい場合、次の手順に進みます。
jruby Celerity を使用するように Culerity の設定
ラッパーを作成したら、次のタスクは、Culerity に使用する jruby に伝えることです。最新のバージョンを使用している場合は、次のコードスニペットをプロジェクトの features/support/env.rb ファイルに追加します。
Culerity.jruby_invocation = File.expand_path("~/.rvm/bin/celerity_jruby")
失敗した場合、"echo $rvm_bin_path" がターミナルに表示するものを ~/.rvm/bin に置き換えます(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" を、前にメモした値に置き換えてください。
コミュニティリソース
- これ Google Groups 投稿 を通じて、Matt Patterson は強化されたサポートを含むパッチを発表しました。
- 上から取った 素晴らしいフック は、意図したとおりに RVM 情報の適切なスクリプティングの使用を示しており、agibralter によって見事に作成されています。 ashleymoran による修正 - 元々推奨されていたソリューション
- 元 mchung による gist