#1229 ✓resolved
Juanma Cervera

Datamapper fails in Rails3 with jRuby

Reported by Juanma Cervera | March 31st, 2010 @ 05:48 AM | in 1.0.0

The edge version of Datamapper fails with Rails3 and jRuby.

After the update of the gems of Gemfile with jruby -S bundle install, I get this error:

    jmcervera@jmcervera-laptop:~/code/aaaGTF$ jruby script/rails server
    /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:11: wrong # of arguments(0 for 1) (ArgumentError)

from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `each'
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `map'
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:96:in `require'
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:96
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:1:in `require'
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:1
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:5:in `require'
from /home/jmcervera/code/aaaGTF/config/application.rb:5
from /home/jmcervera/code/aaaGTF/config/application.rb:39:in `require'
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/railties/lib/rails/commands.rb:39
from /home/jmcervera/.bundle/jruby/1.8/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/railties/lib/rails/commands.rb:10:in `require'
from script/rails:10

Comments and changes to this ticket

  • Martin Gamsjaeger (snusnu)

    Martin Gamsjaeger (snusnu) March 31st, 2010 @ 10:37 AM

    • Milestone set to 1.0.0
    • State changed from “new” to “unconfirmed”
    • Assigned user set to “Martin Gamsjaeger (snusnu)”
  • Juanma Cervera

    Juanma Cervera April 1st, 2010 @ 05:00 AM

    I don know if this is important but I am getting this warning when I do
    jruby _S bundle install

    Installing dm-core (0.10.3) from git://github.com/datamapper/dm-core.git (at master)

    dm-core at /home/jmcervera/.bundle/jruby/1.8/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master did not have a valid gemspec.
    This prevents bundler from installing bins or native extensions, but that may not affect its functionality.
    The validation message from Rubygems was:
    ["lib/dm-core/transaction.rb", "spec/public/transaction_spec.rb"] are not files

    Juanma

  • Martin Gamsjaeger (snusnu)

    Martin Gamsjaeger (snusnu) April 1st, 2010 @ 07:51 AM

    Juanma,

    I don't have any ideas yet what's causing your errors, but I'm pretty sure they weren't related to the fact that dm-core's gemspec was out of sync. I pushed a fix for that to dm-core but I doubt that it'll change things for you. I will try to dig at the root of your problem but any additional hints you can give me (maybe a standalone script to reproduce the error?) would really help me

  • Juanma Cervera

    Juanma Cervera April 3rd, 2010 @ 10:39 AM

    Martin

    I'm sorry for being so late at responding.
    I have just update to rails3-beta2 and try to use your template for generation of new app and I am getting the same errors.

    You can see the console log here
    https://gist.github.com/e266f14c5c3930992c2b

    I will try to use the gemset feature of rvm and try to use a new fresh environment for the tests.
    It might be something weird and messy with my installed gems.

  • Juanma Cervera

    Juanma Cervera April 7th, 2010 @ 02:56 AM

    There is no way to have jruby, rails3 and datamapper working for me.
    I am using rvm to manage my ruby installation and I have try using new and blank gemsets for installing again all the gems, and even reinstalle completely the jruby environment. And I am having the same error.
    Even when I generate a new app from scratch with your template.

    jruby -S rails dm_rails3_app -m http://github.com/snusnu/rails-templates/raw/master/dm_rails_master.rb
          create  
          create  README
          create  .gitignore
          create  Rakefile
          create  config.ru
          create  Gemfile
          create  app
          create  app/helpers/application_helper.rb
          create  app/controllers/application_controller.rb
          create  app/views/layouts
          create  app/models
          create  config
          create  config/routes.rb
          create  config/application.rb
          create  config/environment.rb
          create  config/environments
          create  config/environments/test.rb
          create  config/environments/development.rb
          create  config/environments/production.rb
          create  config/initializers
          create  config/initializers/cookie_verification_secret.rb
          create  config/initializers/mime_types.rb
          create  config/initializers/backtrace_silencers.rb
          create  config/initializers/inflections.rb
          create  config/initializers/session_store.rb
          create  config/locales
          create  config/locales/en.yml
          create  config/boot.rb
          create  config/database.yml
          create  db
          create  db/seeds.rb
          create  doc
          create  doc/README_FOR_APP
          create  lib
          create  lib/tasks
          create  lib/tasks/.gitkeep
          create  log
          create  log/server.log
          create  log/production.log
          create  log/development.log
          create  log/test.log
          create  public
          create  public/robots.txt
          create  public/favicon.ico
          create  public/index.html
          create  public/422.html
          create  public/404.html
          create  public/500.html
          create  public/images
          create  public/images/rails.png
          create  public/stylesheets
          create  public/stylesheets/.gitkeep
          create  public/javascripts
          create  public/javascripts/application.js
          create  public/javascripts/prototype.js
          create  public/javascripts/dragdrop.js
          create  public/javascripts/effects.js
          create  public/javascripts/rails.js
          create  public/javascripts/controls.js
          create  script
          create  script/rails
          create  test
          create  test/test_helper.rb
          create  test/performance/browsing_test.rb
          create  test/fixtures
          create  test/functional
          create  test/integration
          create  test/unit
          create  tmp
          create  tmp/sessions
          create  tmp/sockets
          create  tmp/cache
          create  tmp/pids
          create  vendor/plugins
          create  vendor/plugins/.gitkeep
           apply  http://github.com/snusnu/rails-templates/raw/master/dm_rails_master.rb
           apply    http://github.com/snusnu/rails-templates/raw/master/rails_master_gemfile.rb
          remove      Gemfile
          create      Gemfile
           apply    http://github.com/snusnu/rails-templates/raw/master/rails_application.rb
           apply      http://github.com/snusnu/rails-templates/raw/master/rails_application_config.rb
            gsub        config/application.rb
            gsub        config/environments/development.rb
            gsub        config/environments/test.rb
           apply      http://github.com/snusnu/rails-templates/raw/master/database.yml.rb
          remove        config/database.yml
          create        config/database.yml
             run      bundle install from "."
     initializer      jruby_monkey_patch.rb
             run      rails generate rspec:install from "."
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:11: wrong # of arguments(0 for 1) (ArgumentError)
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `each'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `map'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:96:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:96
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:1:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:1
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:5:in `require'
        from /home/jmcervera/code/dm_rails3_app/config/application.rb:5
        from /home/jmcervera/code/dm_rails3_app/config/application.rb:2:in `require'
        from /home/jmcervera/code/dm_rails3_app/config/environment.rb:2
        from /home/jmcervera/code/dm_rails3_app/config/environment.rb:29:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/railties/lib/rails/commands.rb:29
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/railties/lib/rails/commands.rb:9:in `require'
        from script/rails:9
             run      rails generate scaffold Person name:string from "."
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:11: wrong # of arguments(0 for 1) (ArgumentError)
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `each'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `map'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:96:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:96
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:1:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:1
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:5:in `require'
        from /home/jmcervera/code/dm_rails3_app/config/application.rb:5
        from /home/jmcervera/code/dm_rails3_app/config/application.rb:2:in `require'
        from /home/jmcervera/code/dm_rails3_app/config/environment.rb:2
        from /home/jmcervera/code/dm_rails3_app/config/environment.rb:29:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/railties/lib/rails/commands.rb:29
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/railties/lib/rails/commands.rb:9:in `require'
        from script/rails:9
           apply      http://github.com/snusnu/rails-templates/raw/master/spec_helper.rb
          remove        spec/spec_helper.rb
          create        spec/spec_helper.rb
             run      rake spec --trace from "."
    rake aborted!
    wrong # of arguments(0 for 1)
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:11
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `each'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `map'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:96:in `require'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:96
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:1:in `require'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:1
    /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:5:in `require'
    /home/jmcervera/code/dm_rails3_app/config/application.rb:5
    /home/jmcervera/code/dm_rails3_app/config/application.rb:31:in `require'
    /home/jmcervera/.rvm/rubies/jruby-1.4.0/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    /home/jmcervera/code/dm_rails3_app/Rakefile:4
    /home/jmcervera/code/dm_rails3_app/Rakefile:2383:in `load'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/lib/rake.rb:2383:in `raw_load_rakefile'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/lib/rake.rb:2017:in `load_rakefile'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/lib/rake.rb:2016:in `load_rakefile'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/lib/rake.rb:2000:in `run'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/bin/rake:31
    /home/jmcervera/.rvm/gems/jruby-1.4.0/gems/rake-0.8.7/bin/rake:19:in `load'
    /home/jmcervera/.rvm/rubies/jruby-1.4.0/bin/rake:19
    
    --------------------------------------------------------------------------
    After the sever booted, point your browser at http://localhost:3000/people
    --------------------------------------------------------------------------
    
             run      rails server from "."
    data/home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:11: wrong # of arguments(0 for 1) (ArgumentError)
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `each'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5:in `map'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:5
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core/associations/one_to_one.rb:96:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:96
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-core-37b4bd22b9e3842977cf83d32baba459607e900a-master/lib/dm-core.rb:1:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:1
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/dm-rails-6d789ab541218bf52f1038ecd3856026704f4c3b-master/lib/dm-rails/railtie.rb:5:in `require'
        from /home/jmcervera/code/dm_rails3_app/config/application.rb:5
        from /home/jmcervera/code/dm_rails3_app/config/application.rb:39:in `require'
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/railties/lib/rails/commands.rb:39
        from /home/jmcervera/.rvm/gems/jruby-1.4.0/bundler/gems/rails-16a5e918a06649ffac24fd5873b875daf66212ad-master/railties/lib/rails/commands.rb:9:in `require'
        from script/rails:9
    
  • Dan Kubb (dkubb)

    Dan Kubb (dkubb) April 7th, 2010 @ 01:24 PM

    • State changed from “unconfirmed” to “confirmed”
    • Assigned user changed from “Martin Gamsjaeger (snusnu)” to “Dan Kubb (dkubb)”

    It looks like in this specific case, Module#undef_method works differently in MRI as compared with JRuby. In MRI it accepts an Array with 0 or more method names, while in JRuby it accepts only a single method name.

    Since the documented API is to accept only a single method, I am going to change DM to match. I will update this ticket when the commit is ready.

  • Dan Kubb (dkubb)

    Dan Kubb (dkubb) April 7th, 2010 @ 02:25 PM

    • State changed from “confirmed” to “resolved”

    (from [7552a8b2d3ab25e5d7b7e7e4a57f8f7a984e4b53]) Fixed invalid usage of Module#undef_method

    • In MRI Module#undef_method accepts 0 or more method names, and removes them all. In JRuby it accepts only 1 method name. The documentation shows that only 1 method name should be provided, so JRuby matches the docs, while MRI has a much looser contract.

    DM was using the MRI API, but this has been changed to match the documented behaviour, and should work in JRuby.

    [#1229 state:resolved] http://github.com/datamapper/dm-core/commit/7552a8b2d3ab25e5d7b7e7e...

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

Referenced by

Pages