JRuby + minitest не работает из-за ObjectSpace - PullRequest
2 голосов
/ 29 июля 2011

Я новичок в 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!

Есть идеи, какая правильная команда для включения ObjectSpace при запуске rake? Я выполнил такие команды, как

bundle exec jruby -X+O test/functional/my_test.rb
bundle exec jruby -X+O -S irb

без проблем, так что, похоже, это как-то связано с рейком.

1 Ответ

4 голосов
/ 29 июля 2011

Ваша задача rake порождает подпроцессы? Если это так, JRuby может повторно использовать текущий процесс JVM. Попробуйте экспортировать JRUBY_OPTS='-X+O -J-Djruby.launch.inproc=false'.

...