advanced_ar 0.1.3 → 0.1.4

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: 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