mongoid-denormalization 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: