#1271: datamapper 1.0.2 failing with mismatch type errors ------------------------------+--------------------------------------------- Reporter: jhamor@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ------------------------------+--------------------------------------------- Description changed by eloy.de.enige@…: Old description:
When working with datamapper, i get errors in ways "regular" ruby doesnt. This is somewhat of a reduction, as my real world test involves a custom adapter that produces this same problem.
Here is the setup data: <pre> require 'stringio' => true require 'rubygems' => false require 'dm-core' => true class User include DataMapper::Resource
property :login, String, :key => true property :uid, Integer property :gecos, Text end => #<DataMapper::Property::Text @model=User @name=:gecos> User.first User.get('jhamor') User.get(:login => 'jhamor') </pre>
Here is what happens in macruby: <pre> irb(main):001:0> require 'stringio' => true irb(main):002:0> require 'rubygems' => true irb(main):003:0> require 'dm-core' => true irb(main):004:0> DataMapper::Logger.new($stdout, :debug) => #<DataMapper::Logger:0x200426580 @init_args=[#<IO:<STDOUT>>, :debug] @level=0 @buffer=[] @delimiter=" ~ " @auto_flush=true @log=#<IO:<STDOUT>>> irb(main):005:0> class User irb(main):006:1> include DataMapper::Resource irb(main):007:1> property :login, String, :key => true irb(main):008:0> end => #<DataMapper::Property::String @model=User @name=:login> irb(main):009:0> DataMapper.finalize => DataMapper irb(main):010:0> User.first DataMapper::RepositoryNotSetupError: Adapter not set: default. Did you forget to setup? /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/repository.rb:72:in `adapter' /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/repository.rb:131:in `new_query' /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model/scope.rb:30:in `query' /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model.rb:341:in `all' /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model.rb:319:in `each' irb(main):011:0> User.get('jhamor') TypeError: can't convert Hash into Integer /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model.rb:278:in `get' irb(main):012:0> User.get(:login => 'jhamor') TypeError: can't convert Hash into Integer /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model.rb:278:in `get' irb(main):013:0> </pre>
Here is what happens in normal ruby: <pre> [jhamor:~] jhamor% irb
require 'rubygems' => false require 'dm-core' => true class User include DataMapper::Resource
?> property :login, String, :key => true
property :uid, Integer property :gecos, Text end => #<DataMapper::Property::Text @model=User @name=:gecos> User.first DataMapper::RepositoryNotSetupError: Adapter not set: default. Did you forget to setup? from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:72:in `adapter' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:131:in `new_query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model/scope.rb:30:in `query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:374:in `first' from (irb):10 from :0 User.get('jhamor') DataMapper::RepositoryNotSetupError: Adapter not set: default. Did you forget to setup? from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:72:in `adapter' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:131:in `new_query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model/scope.rb:30:in `query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:374:in `first' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:278:in `get' from (irb):11 from :0 User.get(:login => 'jhamor') DataMapper::RepositoryNotSetupError: Adapter not set: default. Did you forget to setup? from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:72:in `adapter' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:131:in `new_query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model/scope.rb:30:in `query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:374:in `first' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:278:in `get' from (irb):12 from :0
</pre>
New description: When working with datamapper, i get errors in ways "regular" ruby doesnt. This is somewhat of a reduction, as my real world test involves a custom adapter that produces this same problem. Here is the setup data: {{{ require 'stringio' => true require 'rubygems' => false require 'dm-core' => true class User include DataMapper::Resource property :login, String, :key => true property :uid, Integer property :gecos, Text end => #<DataMapper::Property::Text @model=User @name=:gecos> User.first User.get('jhamor') User.get(:login => 'jhamor') }}} Here is what happens in macruby: {{{ irb(main):001:0> require 'stringio' => true irb(main):002:0> require 'rubygems' => true irb(main):003:0> require 'dm-core' => true irb(main):004:0> DataMapper::Logger.new($stdout, :debug) => #<DataMapper::Logger:0x200426580 @init_args=[#<IO:<STDOUT>>, :debug] @level=0 @buffer=[] @delimiter=" ~ " @auto_flush=true @log=#<IO:<STDOUT>>> irb(main):005:0> class User irb(main):006:1> include DataMapper::Resource irb(main):007:1> property :login, String, :key => true irb(main):008:0> end => #<DataMapper::Property::String @model=User @name=:login> irb(main):009:0> DataMapper.finalize => DataMapper irb(main):010:0> User.first DataMapper::RepositoryNotSetupError: Adapter not set: default. Did you forget to setup? /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/repository.rb:72:in `adapter' /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/repository.rb:131:in `new_query' /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model/scope.rb:30:in `query' /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model.rb:341:in `all' /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model.rb:319:in `each' irb(main):011:0> User.get('jhamor') TypeError: can't convert Hash into Integer /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model.rb:278:in `get' irb(main):012:0> User.get(:login => 'jhamor') TypeError: can't convert Hash into Integer /Library/Frameworks/MacRuby.framework/Versions/0.11/usr/lib/ruby/Gems/1.9.2/gems /dm-core-1.0.2/lib/dm-core/model.rb:278:in `get' irb(main):013:0> }}} Here is what happens in normal ruby: {{{ [jhamor:~] jhamor% irb
require 'rubygems' => false require 'dm-core' => true class User include DataMapper::Resource
?> property :login, String, :key => true
property :uid, Integer property :gecos, Text end => #<DataMapper::Property::Text @model=User @name=:gecos> User.first DataMapper::RepositoryNotSetupError: Adapter not set: default. Did you forget to setup? from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:72:in `adapter' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:131:in `new_query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model/scope.rb:30:in `query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:374:in `first' from (irb):10 from :0 User.get('jhamor') DataMapper::RepositoryNotSetupError: Adapter not set: default. Did you forget to setup? from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:72:in `adapter' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:131:in `new_query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model/scope.rb:30:in `query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:374:in `first' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:278:in `get' from (irb):11 from :0 User.get(:login => 'jhamor') DataMapper::RepositoryNotSetupError: Adapter not set: default. Did you forget to setup? from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:72:in `adapter' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/repository.rb:131:in `new_query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model/scope.rb:30:in `query' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:374:in `first' from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.2/lib/dm- core/model.rb:278:in `get' from (irb):12 from :0
}}}
-- -- Ticket URL: <http://www.macruby.org/trac/ticket/1271#comment:1> MacRuby <http://macruby.org/>