Ошибка при попытке ускорить мои тесты rspec 1.2 на JRuby и Rails 2.3.10 с использованием nailgun и spork

Недавно я начал использовать JRuby в своем веб-приложении Rails 2.3. С тех пор я испытываю медлительность в моих тестах rspec... тест занимает слишком много времени для запуска, так как я перешел на JRuby.

Во время использования МРТ я никогда не беспокоился о том, чтобы использовать spork для более быстрого выполнения моих тестов, но теперь мне нужно ускорить выполнение моего теста.

Сначала я попробовал spork, но у меня ничего не вышло, потому что:

  1. spork 0.9 RC поддерживает jruby, но не поддерживает рельсы 2.3 (он поддерживает только рельсы 3)
  2. spork 0.8 поддерживает rails 2.3, но не поддерживает jruby. Я думаю, что он использует fork(), гем spork -0.8 не будет устанавливаться на jruby).

Я пытался запустить свои тесты на jruby, rails 2.3 и spork 0.9 rc, но это не сработало, на самом деле было предупреждение о том, что spork 0.9 rc поддерживает только rails >= 3.0

Затем я попробовал nailgun, я установил гем nailgun в моей среде jruby (gem install nailgun) и запустил сервер nailgun (ruby --ng-server в корне моего приложения). Затем я запускаю одну из моих спецификаций (ruby --ng -S spec spec / lib / importacao_atividades_spec.rb). В первый раз, когда я выполнил спецификацию, все прошло нормально, но после этого он продолжал поднимать RuntimeError: недопустимое время выполнения

Проверьте трассировку:

RuntimeError: invalid runtime
       require at org/jruby/RubyKernel.java:1038
       require at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/activesupport-2.3.10/lib/active_support/dependencies.rb:184
        (root) at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/mysql-2.8.1/lib/mysql.rb:3
       require at org/jruby/RubyKernel.java:1038
       require at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/mysql-2.8.1/lib/mysql.rb:68
          each at org/jruby/RubyArray.java:1602
       require at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/bundler-1.0.12/lib/bundler/runtime.rb:66
          each at org/jruby/RubyArray.java:1602
       require at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/bundler-1.0.12/lib/bundler/runtime.rb:55
       require at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/bundler-1.0.12/lib/bundler.rb:120
     load_gems at /Users/razenha/Projects/Pro/portaltrademarketing/config/boot.rb:116
       process at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/rails-2.3.10/lib/initializer.rb:164
          send at org/jruby/RubyKernel.java:2052
           run at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/rails-2.3.10/lib/initializer.rb:113
        (root) at /Users/razenha/Projects/Pro/portaltrademarketing/config/environment.rb:12
       require at org/jruby/RubyKernel.java:1038
       require at /Users/razenha/.rvm/rubies/jruby-1.6.1/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29
        (root) at /Users/razenha/Projects/Pro/portaltrademarketing/config/environment.rb:47
       require at org/jruby/RubyKernel.java:1038
       require at /Users/razenha/.rvm/rubies/jruby-1.6.1/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29
        (root) at /Users/razenha/Projects/Pro/portaltrademarketing/spec/spec_helper.rb:1
          load at org/jruby/RubyKernel.java:1063
    load_files at ./spec/lib/importacao_atividades_spec.rb:15
          each at org/jruby/RubyArray.java:1602
    load_files at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/rspec-1.2.9/lib/spec/runner/example_group_runner.rb:14
  run_examples at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/rspec-1.2.9/lib/spec/runner/options.rb:132
           run at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/rspec-1.2.9/lib/spec/runner/command_line.rb:9
        (root) at /Users/razenha/.rvm/gems/jruby-1.6.1/gems/rspec-1.2.9/bin/spec:5
          load at org/jruby/RubyKernel.java:1063
        (root) at /Users/razenha/.rvm/gems/jruby-1.6.1/bin/spec:19

Так что я действительно застрял здесь. Кто-нибудь знает, как я могу решить проблему с гвоздем? Если нет, есть ли альтернатива? Можно ли использовать spork в jruby и rails 2.3?

1 ответ

Решение

Ох... Похоже, Джруби не нравится старая версия драгоценного камня Redis. Обновил мою версию Resque/Redis gem, и это сработало.

Другие вопросы по тегам