我是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特别相关。
答案 0 :(得分:4)
你的rake任务是否会产生子进程?如果是这样,JRuby可能会重用当前的JVM进程。尝试导出JRUBY_OPTS='-X+O -J-Djruby.launch.inproc=false'
。