better_ar 0.1.1 → 0.2.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 +4 -4
- data/Gemfile +3 -0
- data/better_ar.gemspec +1 -2
- data/lib/better_ar/association_collection.rb +18 -18
- data/lib/better_ar/calculations.rb +16 -7
- data/lib/better_ar/finder_methods.rb +8 -2
- data/lib/better_ar/version.rb +1 -1
- data/lib/better_ar.rb +4 -0
- data/test/test_finder_methods.rb +2 -2
- data/test/{helper.rb → test_helper.rb} +1 -3
- metadata +5 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1b12ec6ea364b851a57f1eaea76dd5e9400d1d5
|
4
|
+
data.tar.gz: 61340f6365bca431263862be69a6806feab5cc9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46ff9adae2d5bc65c65a7b46b826d2bbcb2b2b1fdddd9e528b2f809966f2f053457a8e4240ed804f70996e8b15b715e8ffaaa3029f87969a9f89f70b2a0b716f
|
7
|
+
data.tar.gz: b71c56097afe92358badbe84a93352a397004df78d04a10a28c5734cc7a4ec0663b60291c5fa105af54b0f71ed5809f70a8d434cb5d1cd14604e8e082024f861
|
data/Gemfile
CHANGED
data/better_ar.gemspec
CHANGED
@@ -19,8 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_development_dependency 'activerecord', ['~>
|
22
|
+
s.add_development_dependency 'activerecord', ['~> 4.0.1']
|
23
23
|
s.add_development_dependency 'rake'
|
24
24
|
s.add_development_dependency 'sqlite3'
|
25
|
-
s.add_development_dependency 'debugger'
|
26
25
|
end
|
@@ -1,13 +1,5 @@
|
|
1
1
|
module BetterAr
|
2
2
|
module AssociationCollection
|
3
|
-
|
4
|
-
def self.included(base)
|
5
|
-
base.class_eval do
|
6
|
-
alias_method_chain :first, :better_ar
|
7
|
-
alias_method_chain :count, :better_ar
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
3
|
# Allows for the same interface as {BetterAr::Relation#first} on association collections
|
12
4
|
#
|
13
5
|
# example:
|
@@ -16,11 +8,11 @@ module BetterAr
|
|
16
8
|
# @param [Hash]
|
17
9
|
# Optional
|
18
10
|
# @returns [ActiveRecord::Base]
|
19
|
-
def
|
11
|
+
def first(opts = {})
|
20
12
|
if opts.empty?
|
21
|
-
|
13
|
+
super
|
22
14
|
elsif opts.key?(:conditions)
|
23
|
-
|
15
|
+
super(opts)
|
24
16
|
else
|
25
17
|
scoped.first(opts)
|
26
18
|
end
|
@@ -34,16 +26,24 @@ module BetterAr
|
|
34
26
|
# @param [Hash]
|
35
27
|
# Optional
|
36
28
|
# @returns [Integer]
|
37
|
-
def
|
38
|
-
if
|
39
|
-
|
40
|
-
|
41
|
-
|
29
|
+
def count(column_name = nil, count_options = {})
|
30
|
+
if column_name.is_a?(Hash)
|
31
|
+
count_options = column_name
|
32
|
+
column_name = nil
|
33
|
+
end
|
34
|
+
|
35
|
+
if count_options.empty?
|
36
|
+
super
|
37
|
+
elsif count_options.key?(:conditions)
|
38
|
+
super(column_name, count_options)
|
42
39
|
else
|
43
|
-
|
40
|
+
scope.where(count_options).count
|
44
41
|
end
|
45
42
|
end
|
46
43
|
end
|
47
44
|
end
|
48
45
|
|
49
|
-
|
46
|
+
|
47
|
+
ActiveSupport.on_load(:active_record) do
|
48
|
+
ActiveRecord::Associations::CollectionAssociation.send(:prepend, BetterAr::AssociationCollection)
|
49
|
+
end
|
@@ -13,16 +13,25 @@ module BetterAr
|
|
13
13
|
# @param [Hash]
|
14
14
|
# Optional follows same convention as {#all}
|
15
15
|
# @return [Integer]
|
16
|
-
def count(
|
17
|
-
if
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
def count(column_name = nil, count_options = {})
|
17
|
+
if column_name.is_a?(Hash)
|
18
|
+
count_options = column_name
|
19
|
+
column_name = nil
|
20
|
+
end
|
21
|
+
|
22
|
+
if count_options.empty?
|
23
|
+
super
|
24
|
+
elsif count_options.key?(:conditions)
|
25
|
+
super(column_name, count_options)
|
21
26
|
else
|
22
|
-
all(
|
27
|
+
all(count_options).count
|
23
28
|
end
|
24
29
|
end
|
25
30
|
end
|
26
31
|
end
|
27
32
|
|
28
|
-
|
33
|
+
ActiveSupport.on_load(:active_record) do
|
34
|
+
class << ActiveRecord::Base
|
35
|
+
prepend BetterAr::Calculations
|
36
|
+
end
|
37
|
+
end
|
@@ -55,7 +55,7 @@ module BetterAr
|
|
55
55
|
# @return [ActiveRecord::Base]
|
56
56
|
def first(opts = {})
|
57
57
|
if opts.empty?
|
58
|
-
super
|
58
|
+
super
|
59
59
|
elsif opts.key?(:conditions)
|
60
60
|
super(opts)
|
61
61
|
else
|
@@ -93,4 +93,10 @@ module BetterAr
|
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
96
|
-
|
96
|
+
ActiveSupport.on_load(:active_record) do
|
97
|
+
class << ActiveRecord::Base
|
98
|
+
prepend BetterAr::FinderMethods
|
99
|
+
end
|
100
|
+
|
101
|
+
ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Record.send(:prepend, BetterAr::FinderMethods)
|
102
|
+
end
|
data/lib/better_ar/version.rb
CHANGED
data/lib/better_ar.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
module BetterAr; end
|
2
2
|
|
3
|
+
require 'active_support'
|
4
|
+
require 'active_support/core_ext'
|
5
|
+
require 'active_record/deprecated_finders'
|
6
|
+
require 'active_record'
|
3
7
|
require 'better_ar/finder_methods'
|
4
8
|
require 'better_ar/calculations'
|
5
9
|
require 'better_ar/association_collection'
|
data/test/test_finder_methods.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
describe 'ActiveRecord::Relation Finder Methods' do
|
4
4
|
after do
|
@@ -44,7 +44,7 @@ describe 'ActiveRecord::Relation Finder Methods' do
|
|
44
44
|
it 'calls #first on .all' do
|
45
45
|
expected = User.create(:age => 10)
|
46
46
|
User.create(:age => 11)
|
47
|
-
User.first(:age => 10).must_equal expected
|
47
|
+
User.first(:age => 10).age.must_equal expected.age
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: better_ar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Cardarella
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.0.1
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 4.0.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: debugger
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
description: Better Active Record finders
|
70
56
|
email:
|
71
57
|
- bcardarella@gmail.com
|
@@ -87,8 +73,8 @@ files:
|
|
87
73
|
- lib/better_ar/calculations.rb
|
88
74
|
- lib/better_ar/finder_methods.rb
|
89
75
|
- lib/better_ar/version.rb
|
90
|
-
- test/helper.rb
|
91
76
|
- test/test_finder_methods.rb
|
77
|
+
- test/test_helper.rb
|
92
78
|
homepage: https://github.com/bcardarella/better_ar
|
93
79
|
licenses: []
|
94
80
|
metadata: {}
|
@@ -113,5 +99,5 @@ signing_key:
|
|
113
99
|
specification_version: 4
|
114
100
|
summary: Better Active Record finders
|
115
101
|
test_files:
|
116
|
-
- test/helper.rb
|
117
102
|
- test/test_finder_methods.rb
|
103
|
+
- test/test_helper.rb
|