mongoid-denormalization 1.0.1 → 2.0.0

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
  SHA256:
3
- metadata.gz: 05b84da026a7fcfaebc2e88d4827405f40a7f9ec7b790bb1adcba180d04f3a0f
4
- data.tar.gz: 6ef9b94d70fd7acc07acd11af9f3e31acc0d6178497965d0f98c67fc78dda012
3
+ metadata.gz: 2961c14ba4d913832fc8d708852e68c39f09ad1dc219e0830e3cf47b42513173
4
+ data.tar.gz: f817c1ccddb3d3ab5e41ca26399b4872df2a5569b1478c66722e8ee8a605e082
5
5
  SHA512:
6
- metadata.gz: 209fdc461ca47d802de46ae352c13243e5a19277af883911536169be74452dce46ae78ddfec2fdfce938593755b0fe039a40ffa1d419338344d4177eb85df04a
7
- data.tar.gz: bace3d8e2336b9c328d29f9ce911e119e2cc10ce0c5acf4e22b7e8e23d5c291da082e2f560126e9edf7271492704c575a2db26fa5248e6af218ab731b273a3fc
6
+ metadata.gz: 78dd0ac8339e33a46156f06c198573f6de517e383da6a5577ecd5797d542c7bac149a41385bb26240eee4ba9afec894686dc187f0d6abbd3d28985573e05d8dd
7
+ data.tar.gz: 2aa8741c908390b2626ea8d83bb56bddf6ce70cd48f516403ddaf1210e7bed320ef69b4e1eee9b21db1046c7dbd3752f701c6b70673b19f1fc07af0eebddb763
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.4.2
4
+ - 2.6.3
5
5
  before_install: gem install bundler -v 1.16.0
data/Gemfile CHANGED
@@ -4,3 +4,9 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in mongoid-denormalization.gemspec
6
6
  gemspec
7
+
8
+ group :test do
9
+ gem 'pry'
10
+ gem 'rspec'
11
+ gem 'database_cleaner'
12
+ end
data/Gemfile.lock CHANGED
@@ -1,12 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mongoid-denormalization (1.0.1)
4
+ mongoid-denormalization (2.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ coderay (1.1.2)
10
+ database_cleaner (1.7.0)
9
11
  diff-lcs (1.3)
12
+ method_source (0.9.2)
13
+ pry (0.12.2)
14
+ coderay (~> 1.1.0)
15
+ method_source (~> 0.9.0)
10
16
  rake (10.5.0)
11
17
  rspec (3.6.0)
12
18
  rspec-core (~> 3.6.0)
@@ -27,9 +33,11 @@ PLATFORMS
27
33
 
28
34
  DEPENDENCIES
29
35
  bundler (~> 1.16)
36
+ database_cleaner
30
37
  mongoid-denormalization!
38
+ pry
31
39
  rake (~> 10.0)
32
- rspec (~> 3.0)
40
+ rspec
33
41
 
34
42
  BUNDLED WITH
35
43
  1.17.2
@@ -66,7 +66,7 @@ module Mongoid
66
66
  # end
67
67
 
68
68
  to_klass_roots = to_klass_infos.map{|to_klass_info| to_klass_info[:klasses].map(&:to_s)}.flatten.uniq
69
- from_klass = self.relations[relation.to_s][:class_name].constantize
69
+ from_klass = self.relations[relation.to_s].class_name.constantize
70
70
 
71
71
  field_type = from_klass.fields[field_name.to_s].options[:type] if field_terms.size == 1 && field_name.to_s != "_type"
72
72
  field_type ||= String
@@ -117,14 +117,14 @@ module Mongoid
117
117
  changed_fn = "#{field_terms[0]}_changed?"
118
118
  changed_fn = "asset_filename_changed?" if field_terms[0].to_s == "asset"
119
119
  if from_doc.send(changed_fn)
120
- field_value = ::AcDenormalize::Helpers.field_value(from_doc, field_terms)
121
- ::AcDenormalize::Helpers.update_from_klass_changes(to_klass_infos, from_doc.id, field_value)
120
+ field_value = ::Mongoid::Denormalization::Helpers.field_value(from_doc, field_terms)
121
+ ::Mongoid::Denormalization::Helpers.update_from_klass_changes(to_klass_infos, from_doc.id, field_value)
122
122
  end
123
123
  end
124
124
 
125
125
  after_destroy do |from_doc|
126
126
  field_value = nil
127
- ::AcDenormalize::Helpers.update_from_klass_changes(to_klass_infos, from_doc.id, field_value)
127
+ ::Mongoid::Denormalization::Helpers.update_from_klass_changes(to_klass_infos, from_doc.id, field_value)
128
128
  end
129
129
  end
130
130
 
@@ -141,7 +141,7 @@ module Mongoid
141
141
  from_doc = self.send(relation)
142
142
  return nil if from_doc.blank?
143
143
 
144
- field_value = ::AcDenormalize::Helpers.field_value(from_doc, field_terms)
144
+ field_value = ::Mongoid::Denormalization::Helpers.field_value(from_doc, field_terms)
145
145
 
146
146
  if use_denormalized
147
147
  self.send("#{denormalized_field_name}=", field_value)
@@ -158,7 +158,7 @@ module Mongoid
158
158
  from_doc = self.send(relation)
159
159
  return nil if from_doc.blank?
160
160
 
161
- field_value = ::AcDenormalize::Helpers.field_value(from_doc, field_terms)
161
+ field_value = ::Mongoid::Denormalization::Helpers.field_value(from_doc, field_terms)
162
162
  self.send("#{denormalized_field_name}=", field_value)
163
163
  return true
164
164
  end
@@ -169,7 +169,7 @@ module Mongoid
169
169
  from_doc = self.send(relation)
170
170
  return nil if from_doc.blank?
171
171
 
172
- field_value = ::AcDenormalize::Helpers.field_value(from_doc, field_terms)
172
+ field_value = ::Mongoid::Denormalization::Helpers.field_value(from_doc, field_terms)
173
173
  self.set(denormalized_field_name.to_sym => field_value)
174
174
  end
175
175
 
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Denormalization
3
- VERSION = "1.0.1"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -0,0 +1,39 @@
1
+ namespace :db do
2
+ desc "Verify all denormalizations and repair any inconsistencies"
3
+ task :denormalization => :environment do
4
+ get_denormalizable_models.each do |klass|
5
+ if klass.embedded?
6
+ reflection = klass.reflect_on_all_associations(:embedded_in).first
7
+ parent = reflection.class_name.to_s.classify.constantize
8
+
9
+ unless parent.embedded?
10
+ parent.all.each do |parent_instance|
11
+ parent_instance.send(reflection.inverse).each(&:repair_denormalized!)
12
+ end
13
+ end
14
+ else
15
+ klass.all.each do |instance|
16
+ instance.repair_denormalized!
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ def get_denormalizable_models
23
+ documents = []
24
+ Dir.glob("app/models/**/*.rb").sort.each do |file|
25
+ model_path = file[0..-4].split('/')[2..-1]
26
+ begin
27
+ klass = model_path.map(&:classify).join('::').constantize
28
+
29
+ if klass.ancestors.include?(Mongoid::Document) && klass.ancestors.include?(Mongoid::Denormalization)
30
+ documents << klass
31
+ end
32
+ rescue => e
33
+ # Just for non-mongoid objects that dont have the embedded
34
+ # attribute at the class level.
35
+ end
36
+ end
37
+ documents
38
+ end
39
+ end
@@ -0,0 +1,9 @@
1
+ require 'rails'
2
+
3
+ module Mongoid::Denormalization
4
+ class Railtie < Rails::Railtie
5
+ rake_tasks do
6
+ load 'railties/denormalize.rake'
7
+ end
8
+ end
9
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-denormalization
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amit Chaudhary
@@ -72,6 +72,8 @@ files:
72
72
  - bin/setup
73
73
  - lib/mongoid/denormalization.rb
74
74
  - lib/mongoid/denormalization/version.rb
75
+ - lib/railties/denormalization.rake
76
+ - lib/railties/railtie.rb
75
77
  - mongoid-denormalization.gemspec
76
78
  homepage: http://github.com/chaudhary/mongoid-denormalization
77
79
  licenses: