Guest User

Untitled

a guest
Feb 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. # example:
  2. #
  3. # og = Og.connect(:store => :mysql, :name => 'addressbooks', :user => '...', :password => '...')
  4. # ab1 = Addressbook.new("ab1", og)
  5.  
  6. class Addressbook
  7. attr_reader :group
  8. attr_reader :person
  9. attr_reader :og
  10. attr_reader :module
  11.  
  12. def initialize(name="ab", managed_by=nil)
  13. self.class.const_set(name.capitalize, @module = Module.new) # ruby magic...
  14.  
  15. # order matters
  16. %w(labeledattribute.rb address.rb email.rb group.rb messenger.rb label.rb number.rb person.rb).each { |file|
  17. @module.module_eval(File.read("addressbook/#{file}"))
  18. }
  19.  
  20. @module::Address.set_table name+"_address"
  21. @module::EMail.set_table name+"_email"
  22. @module::Group.set_table name+"_group"
  23. @module::Messenger.set_table name+"_messenger"
  24. @module::Label.set_table name+"_label"
  25. @module::Number.set_table name+"_number"
  26. @module::Person.set_table name+"_person"
  27.  
  28. @module::Person.many_to_many :groups, @module::Group, :table => name+"_group_membership"
  29. @module::Group.many_to_many :people, @module::Person, :table => name+"_group_membership"
  30.  
  31. @person = @module::Person
  32. @group = @module::Group
  33.  
  34. @og = managed_by
  35.  
  36. @og.manage_classes(
  37. @module::Address,
  38. @module::EMail,
  39. @module::Group,
  40. @module::Messenger,
  41. @module::Label,
  42. @module::Number,
  43. @module::Person
  44. )
  45. end
  46. end
Add Comment
Please, Sign In to add comment