由于ObjectSpace,JRuby + minitest失败了

时间:2011-07-28 21:26:23

标签: rake jruby

我是JRuby的新手,我正在努力让我的测试套件正常运行。我正在使用minitest,看起来minitest需要启用ObjectSpace。我已经尝试了以下每个命令:

bundle exec jruby -X+O -S rake
jruby -X+O -S bundle exec rake
JRUBY_OPTS="-X+O" bundle exec rake
export JRUBY_OPTS="-X+O" && bundle exec rake

并且所有这些都导致以下堆栈跟踪:

RuntimeError: ObjectSpace is disabled; each_object will only work with Class, pass -X+O to enable
each_object at org/jruby/RubyObjectSpace.java:167
     each at org/jruby/RubyEnumerator.java:189
     to_a at org/jruby/RubyEnumerable.java:375
      AWS at /Users/kshipley/.rvm/gems/jruby-1.6.2@split/bundler/gems/papi-38fc7d34a33d/lib/papi/aws.rb:1476
     Papi at /Users/kshipley/.rvm/gems/jruby-1.6.2@split/bundler/gems/papi-38fc7d34a33d/lib/papi/aws.rb:6
   (root) at /Users/kshipley/.rvm/gems/jruby-1.6.2@split/bundler/gems/papi-38fc7d34a33d/lib/papi/aws.rb:5
  require at org/jruby/RubyKernel.java:1038
   (root) at /Users/kshipley/.rvm/gems/jruby-1.6.2@split/bundler/gems/papi-38fc7d34a33d/lib/papi/aws.rb:157
  require at org/jruby/RubyKernel.java:1038
  require at /Users/kshipley/.rvm/gems/jruby-1.6.2@split/bundler/gems/papi-38fc7d34a33d/lib/papi.rb:68
     each at org/jruby/RubyArray.java:1602
  require at /Users/kshipley/.rvm/gems/jruby-1.6.2@global/gems/bundler-1.0.15/lib/bundler/runtime.rb:66
     each at org/jruby/RubyArray.java:1602
  require at /Users/kshipley/.rvm/gems/jruby-1.6.2@global/gems/bundler-1.0.15/lib/bundler/runtime.rb:55
  require at /Users/kshipley/.rvm/gems/jruby-1.6.2@global/gems/bundler-1.0.15/lib/bundler.rb:120
   (root) at /Users/kshipley/work/src/split/config/environment.rb:5
  require at org/jruby/RubyKernel.java:1038
   (root) at /Users/kshipley/work/src/split/config/environment.rb:3
  require at org/jruby/RubyKernel.java:1038
   (root) at /Users/kshipley/work/src/split/test/test_helper.rb:1
     load at org/jruby/RubyKernel.java:1063
 __file__ at /Users/kshipley/.rvm/gems/jruby-1.6.2@split/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
     each at org/jruby/RubyArray.java:1602
   (root) at /Users/kshipley/.rvm/gems/jruby-1.6.2@split/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
rake aborted!

任何想法在运行rake时重新启用ObjectSpace的正确命令是什么?我已经运行了像

这样的命令
bundle exec jruby -X+O test/functional/my_test.rb
bundle exec jruby -X+O -S irb

没有任何问题,所以它似乎与rake特别相关。

1 个答案:

答案 0 :(得分:4)

你的rake任务是否会产生子进程?如果是这样,JRuby可能会重用当前的JVM进程。尝试导出JRUBY_OPTS='-X+O -J-Djruby.launch.inproc=false'