Culerity 与 RVM 集成
如果您希望使用基于 RVM 的 Ruby 和 JRuby 与 Culerity,请按照以下步骤操作。请注意,第一组说明目前依赖于您使用最新版本。
设置 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 中,您需要手动指定钩子来切换环境。为此,您首先需要获取 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 的更正 - 最初的首选解决方案
- 原始 mchung 的 gist