Error while trying to make my rspec 1.2 tests go faster on JRuby and Rails 2.3.10 using nailgun and spork

I recently start using JRuby in my Rails 2.3 webapp. Since then, I have been experiencing slowness in my rspec tests... the test are taking too long to run since I switched to JRuby.

While using MRI, I never bothered to use spork in order to run my tests faster, but now I need to speed up the execution of my test.

First, I tried spork, but I did't worked out because:

  1. spork 0.9 RC supports jruby, but does not support rails 2.3 (it only supports rails 3)
  2. spork 0.8 supports rails 2.3, but does not support jruby I think it uses fork(), the spork-0.8 gem won't event install on jruby).

I tried to run my tests on jruby, rails 2.3 and spork 0.9 rc, but it didn't worked, in fact there was a warning message saying that spork 0.9 rc only supports rails >= 3.0

Then I tried nailgun, I installed the nailgun gem in my jruby environment (gem install nailgun) and started the nailgun server (ruby --ng-server at the root of my app). Then I run one of my specs (ruby --ng -S spec spec/lib/importacao_atividades_spec.rb). The first time I executed the spec, it went just fine, but after that it kept raising RuntimeError: invalid runtime

Check the trace:

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

So I am really stuck here. Anyone know how can I fix the nailgun issue? If not, is there an alternative? Is it possible to use spork in jruby and rails 2.3?

Answers


Oh... Looks like jruby does not like an older version of the Redis gem. Updated my Resque/Redis gem version and it worked.


Need Your Help

Error generating XML document. The type Job was not expected

c# .net web-services xml-serialization

I am writing a web app using MVC3 but when trying to pass an object to the controller and show it it doesn't seem to recognize the type or something.

GWT uibinder CanvasElement wont resize when deployed

html5 gwt canvas

I have a canvas element i created using the following:

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.