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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a06ad08bb39f4bce6113d3211ae70ee0f121389c0c6ed94794bc1528894979c4
|
4
|
+
data.tar.gz: 8e7ca779b294e2c3d0bbe657dc6043294e4598766fa1ea6127af6091f3939e0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 964468ac25c780441ddfeeea1bd89a78294060db049e506930c0f4e7f70b82dc4a81bb0340c264c4faaf509f3a97753155e1366c71610637da1347aad0408c74
|
7
|
+
data.tar.gz: 387abf85153e0f202d0f5865cfe1589cd60b07a454aaa128e01c8b02b067d30dcf1b2a4f18981a2ef65156fe53c9e2214f7d45848f417ba782fd2a59ac8e2287
|
data/advanced_ar.gemspec
ADDED
@@ -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 @@
|
|
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
|
data/lib/advanced_ar/version.rb
CHANGED
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.
|
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
|