advanced_ar 0.1.3 → 0.1.4

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: fa3519ddfd34d9170d05d5c8634bf8f0b0d84ba38ebe1cef3bc7ddfe68760001
4
- data.tar.gz: cc0d1fcfe9697bb909ea49ec4c73f794ceeba5331a1ae89aa4fb40ee7bf80d9d
3
+ metadata.gz: a06ad08bb39f4bce6113d3211ae70ee0f121389c0c6ed94794bc1528894979c4
4
+ data.tar.gz: 8e7ca779b294e2c3d0bbe657dc6043294e4598766fa1ea6127af6091f3939e0e
5
5
  SHA512:
6
- metadata.gz: da83392565166dfe4567a8fe73e76a1847778522ff438beef27804320a4972f9e6d9a8fca5b5a4d3c04acb8d86a54d624b20a667d3a5d7ad418053ff04a7e5e0
7
- data.tar.gz: 3bed49515c7ab10026e47f2d4b9688afca6b9da110e60c02b2e5ea087fada2fc54c4d4e361a0297d84609c0738925a18d7132a6ed3fa884f4181e8875c5a807b
6
+ metadata.gz: 964468ac25c780441ddfeeea1bd89a78294060db049e506930c0f4e7f70b82dc4a81bb0340c264c4faaf509f3a97753155e1366c71610637da1347aad0408c74
7
+ data.tar.gz: 387abf85153e0f202d0f5865cfe1589cd60b07a454aaa128e01c8b02b067d30dcf1b2a4f18981a2ef65156fe53c9e2214f7d45848f417ba782fd2a59ac8e2287
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ begin
6
+ require "advanced_ar/version"
7
+ version = AdvancedAR::VERSION
8
+ rescue LoadError
9
+ version = "0.0.0.docker"
10
+ end
11
+
12
+ Gem::Specification.new do |spec|
13
+ spec.name = "advanced_ar"
14
+ spec.version = version
15
+ spec.authors = ["Ethan Knapp"]
16
+ spec.email = ["eknapp@instructure.com"]
17
+
18
+ spec.summary = "Gem for adding advanced features into ActiveRecord"
19
+ spec.homepage = "https://instructure.com"
20
+
21
+ spec.files = Dir["{app,config,db,lib}/**/*", "README.md", "*.gemspec"]
22
+ spec.test_files = Dir["spec/**/*"]
23
+ spec.require_paths = ['lib']
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.15"
26
+ spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rspec", "~> 3.0"
28
+ spec.add_development_dependency "rspec-rails"
29
+ spec.add_development_dependency "pg"
30
+ spec.add_development_dependency "factory"
31
+ spec.add_development_dependency "factory_girl_rails"
32
+ spec.add_development_dependency "timecop"
33
+ spec.add_development_dependency "webmock"
34
+ spec.add_development_dependency "sinatra", ">= 0"
35
+ spec.add_development_dependency "shoulda-matchers"
36
+ spec.add_development_dependency "yard"
37
+ spec.add_development_dependency "pry"
38
+ spec.add_development_dependency "pry-nav"
39
+ spec.add_development_dependency "rubocop"
40
+
41
+ spec.add_dependency "rails", ">= 5"
42
+ spec.add_dependency "activerecord-import"
43
+ end
@@ -0,0 +1,2 @@
1
+ # This Preloader needs to run before any that will load Models
2
+ Miscellany::CustomPreloaders.install
@@ -0,0 +1 @@
1
+ Miscellany::ArbitraryPrefetch.install
@@ -0,0 +1,34 @@
1
+ # This patch fixes an issue where CanCanCan wasn't properly handling
2
+ # existence checks for AR Scopes - instead of do a DB Query, it loaded the entire relation
3
+ module CanCan
4
+ module ConditionsMatcher
5
+ def condition_match?(attribute, value)
6
+ case value
7
+ when Hash
8
+ hash_condition_match?(attribute, value)
9
+ when Range
10
+ value.cover?(attribute)
11
+ when ActiveRecord::Relation
12
+ ar_condition_match?(attribute, value)
13
+ when Enumerable
14
+ value.include?(attribute)
15
+ else
16
+ attribute == value
17
+ end
18
+ end
19
+
20
+ def ar_condition_match?(attribute, value)
21
+ return false if attribute.nil?
22
+
23
+ if attribute.is_a?(Array) || (defined?(ActiveRecord) && attribute.is_a?(ActiveRecord::Relation) && attribute.loaded?)
24
+ value.where(id: attribute.pluck(:id)).exists?
25
+ elsif (defined?(ActiveRecord) && attribute.is_a?(ActiveRecord::Relation))
26
+ value.where(id: attribute.select(:id)).exists?
27
+ elsif (defined?(ActiveRecord) && attribute.is_a?(ActiveRecord::Base))
28
+ value.where(id: attribute.id).exists?
29
+ else
30
+ value.where(id: attribute).exists?
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module AdvancedAR
2
- VERSION = "0.1.3".freeze
2
+ VERSION = "0.1.4".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: advanced_ar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan Knapp
@@ -256,6 +256,10 @@ extensions: []
256
256
  extra_rdoc_files: []
257
257
  files:
258
258
  - README.md
259
+ - advanced_ar.gemspec
260
+ - config/initializers/01_custom_preloaders.rb
261
+ - config/initializers/arbitrary_prefetch.rb
262
+ - config/initializers/cancancan.rb
259
263
  - lib/advanced_ar.rb
260
264
  - lib/advanced_ar/arbitrary_prefetch.rb
261
265
  - lib/advanced_ar/batch_matcher.rb