activerecord_to_poro 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 587b516b162dcf78327bfe17f0321636477647c0
4
- data.tar.gz: cbe5c6dfee693432493fa3f6edc03e17b5e103c4
3
+ metadata.gz: 73555a31ecff01b8d794c304d390d6a742480dff
4
+ data.tar.gz: 7966c2cd299ba10bb133ee76e421b928990c826d
5
5
  SHA512:
6
- metadata.gz: c842467aa6ac65f6108088d5160180fa3b4be50b267cc393e18345bccf3988a3a672a448e59a11b00ef3f5ee7cab755a9028ea7470a64d6c5367af604c25fa51
7
- data.tar.gz: 395836a68972a580931c8480b4a7b8eb7cdbfbd5acfcccb1a20dda3ff456311be71a21ed0cfd2dc406f1d448578a7b32f1f8587daef5d7dd994678263a90dc30
6
+ metadata.gz: 0980c84cee2f41eed81bf1e588b849be5cdd0e435f125a42ade0631f13d970ce6e187e15a690c01c35d7010c2c83e81b458c19ec1abf5db2e07c0572726e31f4
7
+ data.tar.gz: c1de463a85bec7018d6bdfa855acd24758ba9a46523a8abf96f45cbeb78811acea5190d87b8941b824c5e4031407b9f3f91164203032978b389188f04a80119d
data/Guardfile CHANGED
@@ -11,7 +11,9 @@ guard :rspec, all_after_pass: true ,
11
11
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/lib/#{m[1]}_spec.rb" }
12
12
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/integration/lib/#{m[1]}_spec.rb" }
13
13
 
14
- watch('spec/spec_helper.rb') { "spec" }
14
+ watch('spec/spec_helper.rb') { "spec" }
15
+ watch(%r{spec/support/.+\.rb}) { "spec" }
16
+ watch(%r{spec/ar_support/.+\.rb}) { "spec" }
15
17
 
16
18
  watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
17
19
 
data/README.md CHANGED
@@ -18,15 +18,82 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
+ For uptodate doc's take a look into the specs.
22
+
21
23
  ```ruby
22
24
 
25
+ # for instance you'r ActiveRecord models look like this
26
+
27
+ class User < ActiveRecord::Base
28
+ has_many :roles, autosave: true
29
+ has_many :permissions, through: :roles, autosave: true
30
+
31
+ belongs_to :salutation, autosave: true
32
+ has_one :address, autosave: true
33
+ end
34
+
35
+ class Role < ActiveRecord::Base
36
+ has_many :permissions, autosave: true
37
+ belongs_to :user, autosave: true
38
+ end
39
+
40
+ class Salutation < ActiveRecord::Base
41
+ has_many :users, autosave: true
42
+ end
43
+
44
+ class Permission < ActiveRecord::Base
45
+ belongs_to :role, autosave: true
46
+ end
47
+
48
+
49
+ # You can convert them to poro's like this (automatic genereation of a poro class out of you'r AR class)
50
+
23
51
  roles_converter = ActiverecordToPoro::Converter.new(Role)
24
52
  salutation_converter = ActiverecordToPoro::Converter.new(Salutation)
25
- user_converter = ActiverecordToPoro::Converter.new(User, roles: roles_converter, salutation: salutation_converter)
53
+ user_converter = ActiverecordToPoro::Converter.new(User, convert_associations: {roles: roles_converter, salutation: salutation_converter})
26
54
 
27
55
 
28
56
  poro = user_converter.load(User.first)
29
57
 
58
+ # Or with you'r custom class
59
+
60
+ roles_converter = ActiverecordToPoro::Converter.new(Role,
61
+ load_source: YourPoroClass
62
+ )
63
+
64
+
65
+ # default 1:1 mapping only or except
66
+
67
+ roles_converter = ActiverecordToPoro::Converter.new(Role,
68
+ except: [:lock_version]
69
+ )
70
+
71
+ roles_converter = ActiverecordToPoro::Converter.new(Role,
72
+ only: [:name]
73
+ )
74
+
75
+ # add you'r own mapping rules
76
+
77
+ roles_converter.extend_mapping do
78
+ rule to: :lock_version # for more look @ https://github.com/slowjack2k/yaoc
79
+ end
80
+
81
+ # new rule for faster association mapping
82
+
83
+ roles_converter.extend_mapping do
84
+ association_rule to: association_name,
85
+ lazy_loading: true,
86
+ converter: association_converter
87
+ # optional
88
+ # from: ...,
89
+ # reverse_to: ...,
90
+ # reverse_from: ...,
91
+ # converter: ..., # a ActiverecordToPoro::Converter
92
+ # is_collection: ..., # when for instance a scope is used or another method that delivers an ar object
93
+ end
94
+
95
+
96
+
30
97
 
31
98
 
32
99
  ```
@@ -3,6 +3,7 @@ require 'activerecord_to_poro/version'
3
3
  require 'activerecord_to_poro/metadata_enabled'
4
4
  require 'activerecord_to_poro/metadata'
5
5
  require 'activerecord_to_poro/default_poro_class_builder'
6
+ require 'activerecord_to_poro/mapper_extension'
6
7
  require 'activerecord_to_poro/converter'
7
8
 
8
9
  module ActiverecordToPoro
@@ -5,13 +5,22 @@ module ActiverecordToPoro
5
5
  attr_accessor :load_source_class,
6
6
  :dump_source_class,
7
7
  :association_converters,
8
- :use_lazy_loading
9
-
10
- def initialize(ar_class, use_lazy_loading=true, **association_converters)
8
+ :use_lazy_loading,
9
+ :except_attributes,
10
+ :only_attributes
11
+
12
+ def initialize(ar_class,
13
+ use_lazy_loading=true,
14
+ except: nil,
15
+ only: nil,
16
+ load_source: nil,
17
+ convert_associations: {})
11
18
  self.load_source_class = ar_class
12
- self.dump_source_class = DefaultPoroClassBuilder.new(ar_class).()
13
- self.association_converters = association_converters
19
+ self.dump_source_class = load_source || DefaultPoroClassBuilder.new(ar_class).()
20
+ self.association_converters = convert_associations
14
21
  self.use_lazy_loading = use_lazy_loading
22
+ self.except_attributes = Array(except)
23
+ self.only_attributes = only.nil? ? nil : Array(only) # an empty array can be wanted, so that there is no default mapping @ all
15
24
  end
16
25
 
17
26
  def load(to_convert)
@@ -22,20 +31,37 @@ module ActiverecordToPoro
22
31
  mapper.dump(to_convert)
23
32
  end
24
33
 
34
+ def extend_mapping(&block)
35
+ mapper.add_mapping &block
36
+ end
37
+
38
+
25
39
  def mapper
26
40
  @mapper||= Yaoc::ObjectMapper.new(self.dump_source_class, self.load_source_class).tap do |mapper|
27
- add_mapping_for_current_class(mapper)
41
+ mapper.extend ActiverecordToPoro::MapperExtension
42
+ mapper.fetcher(:public_send)
43
+
44
+ add_default_mapping_for_current_class(mapper)
28
45
  add_mapping_for_associations(mapper)
29
46
  end
30
47
  end
31
48
 
49
+ def attributes_for_default_mapping
50
+ self.only_attributes || (
51
+ columns(self.load_source_class) -
52
+ primary_keys(self.load_source_class) -
53
+ association_specific_columns(self.load_source_class) -
54
+ associated_object_accessors(self.load_source_class) -
55
+ self.except_attributes
56
+ )
57
+ end
58
+
32
59
  protected
33
60
 
34
- def add_mapping_for_current_class(mapper)
35
- tmp_quirk = plain_attributes
61
+ def add_default_mapping_for_current_class(mapper)
62
+ tmp_quirk = attributes_for_default_mapping
36
63
 
37
64
  mapper.add_mapping do
38
- fetcher :public_send
39
65
  rule to: tmp_quirk
40
66
 
41
67
  rule to: :_set_metadata,
@@ -55,17 +81,13 @@ module ActiverecordToPoro
55
81
 
56
82
  def add_mapping_for_associations(mapper)
57
83
  association_converters.each_pair do |association_name, association_converter|
58
- map_collection = self.load_source_class.reflections[association_name].collection?
59
84
 
60
85
  lazy_quirk = self.use_lazy_loading
61
86
 
62
87
  mapper.add_mapping do
63
- fetcher :public_send
64
- rule to: association_name,
65
- lazy_loading: lazy_quirk,
66
- reverse_lazy_loading: false, #AR doesn't like ToProcDelegator
67
- object_converter: association_converter.mapper,
68
- is_collection: map_collection
88
+ association_rule to: association_name,
89
+ lazy_loading: lazy_quirk,
90
+ converter: association_converter
69
91
  end
70
92
  end
71
93
  end
@@ -86,12 +108,5 @@ module ActiverecordToPoro
86
108
  end
87
109
  end
88
110
 
89
- def plain_attributes
90
- columns(self.load_source_class) -
91
- primary_keys(self.load_source_class) -
92
- association_specific_columns(self.load_source_class) -
93
- associated_object_accessors(self.load_source_class)
94
- end
95
-
96
111
  end
97
112
  end
@@ -2,19 +2,19 @@ module ActiverecordToPoro
2
2
  module ColumnHelper
3
3
  module_function
4
4
  def columns(ar_class)
5
- ar_class.column_names
5
+ ar_class.column_names.map &:to_sym
6
6
  end
7
7
 
8
8
  def primary_keys(ar_class)
9
- [ar_class.primary_key]
9
+ [ar_class.primary_key].map &:to_sym
10
10
  end
11
11
 
12
12
  def association_specific_columns(ar_class)
13
- ar_class.reflect_on_all_associations(:belongs_to).map(&:foreign_key)
13
+ ar_class.reflect_on_all_associations(:belongs_to).map(&:foreign_key).map &:to_sym
14
14
  end
15
15
 
16
16
  def associated_object_accessors(ar_class)
17
- ar_class.reflections.keys
17
+ ar_class.reflections.keys.map &:to_sym
18
18
  end
19
19
  end
20
20
 
@@ -0,0 +1,27 @@
1
+ module ActiverecordToPoro
2
+ module MapperExtension
3
+
4
+ def association_rule(to: nil,
5
+ from: to,
6
+ reverse_to: from,
7
+ reverse_from: to,
8
+ converter: nil,
9
+ is_collection: false,
10
+ lazy_loading: nil
11
+ )
12
+
13
+ map_collection = (self.dump_result_source.reflections[from] &&
14
+ self.dump_result_source.reflections[from].collection?) || is_collection
15
+
16
+ rule to: to,
17
+ from: from,
18
+ reverse_to: reverse_to,
19
+ reverse_from: reverse_from,
20
+ reverse_lazy_loading: false, #AR doesn't like ToProcDelegator
21
+ object_converter: converter.mapper,
22
+ is_collection: map_collection,
23
+ lazy_loading: lazy_loading
24
+
25
+ end
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module ActiverecordToPoro
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -7,13 +7,17 @@ feature 'Map active record associations', %q{
7
7
  } do
8
8
 
9
9
  given!(:mapper){
10
- ActiverecordToPoro::Converter.new(a_active_record_class, roles: roles_converter, salutation: salutation_converter)
10
+ ActiverecordToPoro::Converter.new(a_active_record_class, convert_associations: {roles: roles_converter, salutation: salutation_converter} )
11
11
  }
12
12
 
13
13
  given!(:roles_converter){
14
14
  ActiverecordToPoro::Converter.new(Role)
15
15
  }
16
16
 
17
+ given!(:permissions_converter){
18
+ ActiverecordToPoro::Converter.new(Permission)
19
+ }
20
+
17
21
  given!(:salutation_converter){
18
22
  ActiverecordToPoro::Converter.new(Salutation)
19
23
  }
@@ -26,12 +30,35 @@ feature 'Map active record associations', %q{
26
30
  a_active_record_class.create!(name: "my name", email: "my_name@example.com").tap do |user|
27
31
  user.roles.create!(name: "admin")
28
32
  user.roles.create!(name: "guest")
33
+
34
+ user.roles.first.permissions.create!(name: "first_permission")
35
+ user.roles.first.permissions.create!(name: "second_permission")
36
+
37
+ user.roles.last.permissions.create!(name: "third_permission")
38
+
29
39
  user.salutation = Salutation.create!(name: "Mister")
30
40
 
41
+ user.address = Address.create!(street: 'Westminster Abbey')
42
+
31
43
  user.save!
44
+
45
+ user.reload
46
+ end
47
+ }
48
+
49
+ given(:a_custom_poro_class){
50
+ ActiverecordToPoro::DefaultPoroClassBuilder.new(a_active_record_class).().tap do |new_class|
51
+ new_class.send(:attr_accessor, :some_other_name)
32
52
  end
33
53
  }
34
54
 
55
+ given(:mapper_with_custom_source){
56
+ ActiverecordToPoro::Converter.new(a_active_record_class,
57
+ load_source: a_custom_poro_class,
58
+ except: [:lock_version]
59
+ )
60
+ }
61
+
35
62
 
36
63
  scenario "creates a poro out of an ActiveRecord object with associations set" do
37
64
  expect(mapper.load(a_active_record_object).roles.size).to eq 2
@@ -41,6 +68,7 @@ feature 'Map active record associations', %q{
41
68
  scenario "creates an ActiveRecord object from a poro object with associations set" do
42
69
  poro = mapper.load(a_active_record_object)
43
70
  expect(mapper.dump(poro).roles.size).to eq 2
71
+ expect(mapper.dump(poro).permissions.size).to eq 3
44
72
  end
45
73
 
46
74
  scenario "lazy loads associated objects" do
@@ -50,4 +78,21 @@ feature 'Map active record associations', %q{
50
78
  mapper.load(a_active_record_object)
51
79
  end
52
80
 
81
+ scenario 'add custom association mappings' do
82
+ quirk_converter = permissions_converter
83
+
84
+ mapper_with_custom_source.extend_mapping do
85
+
86
+ association_rule to: :some_other_name,
87
+ from: :permissions,
88
+ converter: quirk_converter,
89
+ lazy_loading: true
90
+
91
+ end
92
+
93
+ user_poro = mapper_with_custom_source.load(a_active_record_object)
94
+
95
+ expect(user_poro.some_other_name.size).to eq 3
96
+ end
97
+
53
98
  end
@@ -10,6 +10,13 @@ feature "Map active record objects", %q{
10
10
  ActiverecordToPoro::Converter.new(a_active_record_class)
11
11
  }
12
12
 
13
+ given(:mapper_with_custom_source){
14
+ ActiverecordToPoro::Converter.new(a_active_record_class,
15
+ load_source: custom_poro_class,
16
+ except: [:lock_version]
17
+ )
18
+ }
19
+
13
20
  given(:a_active_record_class){
14
21
  User
15
22
  }
@@ -18,13 +25,12 @@ feature "Map active record objects", %q{
18
25
  a_active_record_class.create!(name: "my name", email: "my_name@example.com")
19
26
  }
20
27
 
21
- given(:expected_poro_class_attributes){
22
- [:name, :email, :roles, :salutation]
28
+ given(:custom_poro_class){
29
+ ActiverecordToPoro::DefaultPoroClassBuilder.new(a_active_record_class).()
23
30
  }
24
31
 
25
-
26
32
  scenario "creates a poro out of an ActiveRecord object" do
27
- expect(mapper.load(a_active_record_object).members).to eq expected_poro_class_attributes
33
+ expect(mapper.load(a_active_record_object)).not_to be_kind_of ActiveRecord::Base
28
34
  end
29
35
 
30
36
  scenario "creates an ActiveRecord object from a poro object" do
@@ -32,4 +38,16 @@ feature "Map active record objects", %q{
32
38
  expect(mapper.dump(poro)).to eq a_active_record_object
33
39
  end
34
40
 
41
+ scenario "use my own source class for converting ActiveRecord objects" do
42
+ expect(mapper_with_custom_source.load(a_active_record_object)).to be_kind_of custom_poro_class
43
+ end
44
+
45
+ scenario 'extend default mapping' do
46
+ mapper_with_custom_source.extend_mapping do
47
+ rule to: :lock_version
48
+ end
49
+
50
+ expect(mapper.load(a_active_record_object).lock_version).to eq a_active_record_object.lock_version
51
+ end
52
+
35
53
  end
@@ -4,15 +4,30 @@ class CreateMyArClass < ActiveRecord::Migration
4
4
  t.string :name
5
5
  t.string :email
6
6
  t.integer :salutation_id
7
+ t.integer :lock_version
7
8
  end
8
9
 
9
10
  create_table :roles do |t|
10
11
  t.string :name
11
12
  t.integer :user_id
13
+ t.integer :lock_version
14
+ end
15
+
16
+ create_table :permissions do |t|
17
+ t.string :name
18
+ t.integer :role_id
19
+ t.integer :lock_version
12
20
  end
13
21
 
14
22
  create_table :salutations do |t|
15
23
  t.string :name
24
+ t.integer :lock_version
25
+ end
26
+
27
+ create_table :addresses do |t|
28
+ t.string :street
29
+ t.integer :user_id
30
+ t.integer :lock_version
16
31
  end
17
32
  end
18
33
  end
@@ -0,0 +1,3 @@
1
+ class Address < ActiveRecord::Base
2
+ belongs_to :user, autosave: true
3
+ end
@@ -0,0 +1,3 @@
1
+ class Permission < ActiveRecord::Base
2
+ belongs_to :role, autosave: true
3
+ end
@@ -1,3 +1,4 @@
1
1
  class Role < ActiveRecord::Base
2
- belongs_to :user
2
+ has_many :permissions, autosave: true
3
+ belongs_to :user, autosave: true
3
4
  end
@@ -1,3 +1,3 @@
1
1
  class Salutation < ActiveRecord::Base
2
- has_many :users
2
+ has_many :users, autosave: true
3
3
  end
@@ -1,8 +1,9 @@
1
1
  class User < ActiveRecord::Base
2
- has_many :roles
3
- belongs_to :salutation
2
+ has_many :roles, autosave: true
3
+ has_many :permissions, through: :roles, autosave: true
4
+
5
+ belongs_to :salutation, autosave: true
6
+ has_one :address, autosave: true
7
+
4
8
 
5
- def zz
6
- ActiveRecord::Base.new
7
- end
8
9
  end
@@ -1,67 +1,88 @@
1
1
  require 'integration_spec_helper'
2
2
 
3
3
  describe ActiverecordToPoro::Converter do
4
- subject!{
5
- ActiverecordToPoro::Converter.new(User, roles: roles_converter, salutation: salutation_converter)
6
- }
7
-
8
- let(:roles_converter){
9
- ActiverecordToPoro::Converter.new(Role)
10
- }
11
-
12
- let(:salutation_converter){
13
- ActiverecordToPoro::Converter.new(Salutation)
14
- }
15
-
16
- let(:ar_object){
17
- User.create!(name: 'my name', email: 'my_name@example.com').tap do |user|
18
- user.roles.create!(name: 'admin')
19
- user.roles.create!(name: 'guest')
20
- end
21
- }
22
4
 
23
- let!(:loaded_poro_object){
24
- subject.load(ar_object)
25
- }
5
+ describe '.new' do
6
+ subject{
7
+ ActiverecordToPoro::Converter
8
+ }
26
9
 
27
- describe '#load' do
28
- it 'creates a poro' do
29
- expect(subject.load(ar_object)).not_to be_kind_of ActiveRecord::Base
10
+ it 'removes "except" attributes from default mapping' do
11
+ object = subject.new(User, except: :lock_version)
12
+ expect(object.attributes_for_default_mapping).not_to include :lock_version
30
13
  end
31
14
 
32
- it 'sets metadata for loaded objects' do
33
- expect(loaded_poro_object._metadata).not_to be_nil
34
- expect(loaded_poro_object._metadata.primary_key_value).to eq ar_object.id
15
+ it 'uses "only" attributes for default mapping' do
16
+ object = subject.new(User, only: :id)
17
+ expect(object.attributes_for_default_mapping).to eq [:id]
35
18
  end
36
19
 
37
- it 'converts also associated objects' do
38
- expect(subject.load(ar_object).roles.size).to eq 2
39
- end
20
+ end
21
+
22
+ context 'instance methods' do
23
+ subject!{
24
+ ActiverecordToPoro::Converter.new(User, convert_associations: {roles: roles_converter, salutation: salutation_converter})
25
+ }
40
26
 
41
- it 'lazy loads associated objects' do
42
- expect(ar_object).not_to receive :roles
27
+ let(:roles_converter){
28
+ ActiverecordToPoro::Converter.new(Role)
29
+ }
30
+
31
+ let(:salutation_converter){
32
+ ActiverecordToPoro::Converter.new(Salutation)
33
+ }
34
+
35
+ let(:ar_object){
36
+ User.create!(name: 'my name', email: 'my_name@example.com').tap do |user|
37
+ user.roles.create!(name: 'admin')
38
+ user.roles.create!(name: 'guest')
39
+ end
40
+ }
41
+
42
+ let!(:loaded_poro_object){
43
43
  subject.load(ar_object)
44
- end
44
+ }
45
45
 
46
- end
46
+ describe '#load' do
47
+ it 'creates a poro' do
48
+ expect(subject.load(ar_object)).not_to be_kind_of ActiveRecord::Base
49
+ end
47
50
 
48
- describe '#dump' do
49
- it 'creates an ActiveRecordObject' do
50
- expect(subject.dump(loaded_poro_object)).to be_kind_of ActiveRecord::Base
51
- end
51
+ it 'sets metadata for loaded objects' do
52
+ expect(loaded_poro_object._metadata).not_to be_nil
53
+ expect(loaded_poro_object._metadata.primary_key_value).to eq ar_object.id
54
+ end
52
55
 
53
- it 'sets the primary key when it existed before' do
54
- expect(subject.dump(loaded_poro_object).id).to eq ar_object.id
55
- end
56
+ it 'converts also associated objects' do
57
+ expect(subject.load(ar_object).roles.size).to eq 2
58
+ end
59
+
60
+ it 'lazy loads associated objects' do
61
+ expect(ar_object).not_to receive :roles
62
+ subject.load(ar_object)
63
+ end
56
64
 
57
- it 'sets new_record to false when it is an existing record' do
58
- expect(subject.dump(loaded_poro_object).new_record?).to be_falsy
59
65
  end
60
66
 
61
- it 'converts also associated objects' do
62
- count_roles = ar_object.roles.size
67
+ describe '#dump' do
68
+ it 'creates an ActiveRecordObject' do
69
+ expect(subject.dump(loaded_poro_object)).to be_kind_of ActiveRecord::Base
70
+ end
63
71
 
64
- expect(subject.dump(loaded_poro_object).roles.size).to eq count_roles
72
+ it 'sets the primary key when it existed before' do
73
+ expect(subject.dump(loaded_poro_object).id).to eq ar_object.id
74
+ end
75
+
76
+ it 'sets new_record to false when it is an existing record' do
77
+ expect(subject.dump(loaded_poro_object).new_record?).to be_falsy
78
+ end
79
+
80
+ it 'converts also associated objects' do
81
+ count_roles = ar_object.roles.size
82
+
83
+ expect(subject.dump(loaded_poro_object).roles.size).to eq count_roles
84
+ end
65
85
  end
86
+
66
87
  end
67
88
  end
@@ -6,13 +6,13 @@ describe ActiverecordToPoro::DefaultPoroClassBuilder do
6
6
  }
7
7
 
8
8
  let(:expected_poro_class){
9
- Yaoc::Helper::StructHE(:name, :email, :roles, :salutation)
9
+ Yaoc::Helper::StructHE(:name, :email, :roles, :salutation, :address, :permissions, :lock_version)
10
10
  }
11
11
 
12
12
  describe "#call" do
13
13
 
14
14
  it "creates a poro class for an ActiveRecord class" do
15
- expect(subject.call.members).to eq expected_poro_class.members
15
+ expect(subject.call.members.sort).to eq expected_poro_class.members.sort
16
16
  end
17
17
 
18
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord_to_poro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dieter Späth
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-28 00:00:00.000000000 Z
11
+ date: 2014-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: abstract_type
@@ -280,6 +280,7 @@ files:
280
280
  - lib/activerecord_to_poro.rb
281
281
  - lib/activerecord_to_poro/converter.rb
282
282
  - lib/activerecord_to_poro/default_poro_class_builder.rb
283
+ - lib/activerecord_to_poro/mapper_extension.rb
283
284
  - lib/activerecord_to_poro/metadata.rb
284
285
  - lib/activerecord_to_poro/metadata_enabled.rb
285
286
  - lib/activerecord_to_poro/version.rb
@@ -288,6 +289,8 @@ files:
288
289
  - spec/acceptance_spec_helper.rb
289
290
  - spec/ar_spec_helper.rb
290
291
  - spec/ar_support/db/migrate/20140127093447_create_my_ar_class.rb
292
+ - spec/ar_support/models/address.rb
293
+ - spec/ar_support/models/permission.rb
291
294
  - spec/ar_support/models/role.rb
292
295
  - spec/ar_support/models/salutation.rb
293
296
  - spec/ar_support/models/user.rb
@@ -328,6 +331,8 @@ test_files:
328
331
  - spec/acceptance_spec_helper.rb
329
332
  - spec/ar_spec_helper.rb
330
333
  - spec/ar_support/db/migrate/20140127093447_create_my_ar_class.rb
334
+ - spec/ar_support/models/address.rb
335
+ - spec/ar_support/models/permission.rb
331
336
  - spec/ar_support/models/role.rb
332
337
  - spec/ar_support/models/salutation.rb
333
338
  - spec/ar_support/models/user.rb