Guest User

Untitled

a guest
Apr 26th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. require 'pp'
  2. require 'do_sqlite3'
  3. require 'dm-core'
  4.  
  5. DataMapper.setup(:default, 'sqlite3:///tmp/bs.db')
  6.  
  7. class Infestation
  8. include DataMapper::Resource
  9. property :id, Serial
  10.  
  11. belongs_to :sheep
  12. belongs_to :flea
  13. end
  14.  
  15. class Sheep
  16. include DataMapper::Resource
  17.  
  18. property :id, Serial
  19. property :name, String, :lazy => false
  20.  
  21. has n, :infestations
  22. has n, :fleas, :through => :infestations
  23. end
  24.  
  25. class Flea
  26. include DataMapper::Resource
  27.  
  28. property :id, Serial
  29. property :name, String, :lazy => false
  30.  
  31. has n, :infestations
  32. has n, :sheeps, :through => :infestations
  33. end
  34.  
  35. DataMapper.auto_migrate!
  36. DataObjects::Sqlite3.logger = DataObjects::Logger.new(STDOUT, 0)
  37.  
  38. # now for the interesting stuff
  39. s = Sheep.create(:name => 'Shaun')
  40. s.fleas.new(:name => 'Fred')
  41. s.fleas.new(:name => 'Frank')
  42. s.save or raise "argh?"
  43.  
  44. @s = Sheep.first
  45.  
  46. puts "==========================="
  47. puts "Flea.repositories is normal"
  48. pp Flea.repositories
  49. puts "@properties before we break it"
  50. pp Flea.instance_variable_get("@properties")
  51.  
  52. puts "This screws up @properties on Flea"
  53. (@s.fleas(:name => "Fred") - @s.fleas(:name => "Frank")).to_a
  54.  
  55. puts "This should not have the Repository as a key"
  56. pp Flea.instance_variable_get("@properties")
  57. puts "And accessing repositories will raise"
  58. Flea.repositories # This raises
Add Comment
Please, Sign In to add comment