activerecord-utils 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gemtest +0 -0
- data/Manifest.txt +6 -0
- data/README.md +10 -7
- data/Rakefile +2 -2
- data/lib/activerecord/utils.rb +12 -97
- data/lib/activerecord/utils/alias.rb +71 -0
- data/lib/activerecord/utils/comp3.rb +21 -0
- data/lib/activerecord/utils/random.rb +27 -0
- data/lib/activerecord/utils/version.rb +2 -1
- data/test/helper.rb +90 -0
- data/test/test_finders.rb +24 -0
- data/test/test_random.rb +18 -0
- metadata +46 -17
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: eecd95d124a2fccb441fb7dfeafc2d5dc87c3679
|
4
|
+
data.tar.gz: ce9c1533eb2bd30b81bc0ba41b31fb4223c15bb3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b3f887f9f2709b50bafe9b8ed500be5fece830ad71355f4c7e7d9baacaa41d1d10d42aca019b2be98f00b26445fb50f74d031ebc336928e561f57fa630cd9ec7
|
7
|
+
data.tar.gz: f036fddcc6990e7932b15d9ccbb29168214d58a12b6b5080e0e908cb084ca6d46f395fcd2f8b9f2d6f95f9f968108c7438ae9c025c2170149961955a92fa17b8
|
data/.gemtest
ADDED
File without changes
|
data/Manifest.txt
CHANGED
@@ -3,4 +3,10 @@ Manifest.txt
|
|
3
3
|
README.md
|
4
4
|
Rakefile
|
5
5
|
lib/activerecord/utils.rb
|
6
|
+
lib/activerecord/utils/alias.rb
|
7
|
+
lib/activerecord/utils/comp3.rb
|
8
|
+
lib/activerecord/utils/random.rb
|
6
9
|
lib/activerecord/utils/version.rb
|
10
|
+
test/helper.rb
|
11
|
+
test/test_finders.rb
|
12
|
+
test/test_random.rb
|
data/README.md
CHANGED
@@ -19,7 +19,7 @@ generates
|
|
19
19
|
def plato # reader
|
20
20
|
send( :og ) # e.g. return og
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def plato=(value) # writer
|
24
24
|
send( :'og=', value ) # e.g. return self.og=value
|
25
25
|
end
|
@@ -32,20 +32,23 @@ generates
|
|
32
32
|
generates
|
33
33
|
|
34
34
|
def published
|
35
|
-
read_attribute_w_fallbacks( :published, :touched )
|
35
|
+
# e.g. read_attribute_w_fallbacks( :published, :touched ) - equals:
|
36
|
+
|
37
|
+
value = read_attribute( :published )
|
38
|
+
value = read_attribute( :touched ) if value.nil?
|
39
|
+
value
|
36
40
|
end
|
37
41
|
|
38
42
|
|
39
|
-
###
|
40
|
-
|
41
|
-
e.g. find random record e.g.
|
43
|
+
### `rnd` finder
|
42
44
|
|
45
|
+
Find random record e.g.:
|
43
46
|
|
44
47
|
beer_of_the_week = Beer.rnd
|
45
48
|
|
46
49
|
equals
|
47
50
|
|
48
|
-
beer_of_the_week = Beer.offset( rand( Beer.count) ).limit(1).first
|
51
|
+
beer_of_the_week = Beer.offset( rand( Beer.count ) ).limit(1).first
|
49
52
|
|
50
53
|
|
51
54
|
|
@@ -63,4 +66,4 @@ equals
|
|
63
66
|
## License
|
64
67
|
|
65
68
|
The scripts are dedicated to the public domain.
|
66
|
-
Use it as you please with no restrictions whatsoever.
|
69
|
+
Use it as you please with no restrictions whatsoever.
|
data/Rakefile
CHANGED
@@ -18,13 +18,13 @@ Hoe.spec 'activerecord-utils' do
|
|
18
18
|
self.history_file = 'History.md'
|
19
19
|
|
20
20
|
self.extra_deps = [
|
21
|
-
|
21
|
+
['logutils']
|
22
22
|
]
|
23
23
|
|
24
24
|
self.licenses = ['Public Domain']
|
25
25
|
|
26
26
|
self.spec_extras = {
|
27
|
-
:
|
27
|
+
required_ruby_version: '>= 1.9.2'
|
28
28
|
}
|
29
29
|
|
30
30
|
|
data/lib/activerecord/utils.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
|
2
|
-
|
3
2
|
require 'activerecord/utils/version' # let version always go first
|
4
3
|
|
5
4
|
|
@@ -8,14 +7,15 @@ module ActiveRecord
|
|
8
7
|
module Utils
|
9
8
|
|
10
9
|
def self.banner
|
11
|
-
|
10
|
+
## add ar PRE too? how?
|
11
|
+
ar = "activerecord/#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}.#{ActiveRecord::VERSION::TINY}"
|
12
|
+
"activerecord-utils/#{VERSION} (#{ar}) on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
12
13
|
end
|
13
14
|
|
14
|
-
=begin
|
15
15
|
def self.root
|
16
|
-
"#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
|
16
|
+
"#{File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )}"
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
end # module Utils
|
20
20
|
|
21
21
|
end # module ActiveRecord
|
@@ -23,102 +23,17 @@ end # module ActiveRecord
|
|
23
23
|
|
24
24
|
########################
|
25
25
|
# add some methods to ActiveRecord::Base
|
26
|
-
#
|
27
26
|
# - todo: use Concerns ?? why? why not??
|
28
27
|
|
28
|
+
if ActiveRecord::VERSION::MAJOR == 3 # only add to 3.x series
|
29
|
+
require 'activerecord/utils/comp3'
|
30
|
+
end
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
### note:
|
33
|
-
## alias_method will NOT work for activerecord attributes
|
34
|
-
## - attribute reader/writer will NOT exist on startup
|
35
|
-
# thus, lets add a new alias_attr that will
|
36
|
-
# send message / forward method call on demand
|
37
|
-
#
|
38
|
-
# e.g. use like:
|
39
|
-
#
|
40
|
-
# alias_attr :abvii, :abv
|
41
|
-
|
42
|
-
##
|
43
|
-
# todo: add opts={} e.g. lets us add, for example, depreciated: true ??
|
44
|
-
# - will issue a warning
|
45
|
-
|
46
|
-
def self.alias_attr_reader( new, old )
|
47
|
-
define_method( new ) do
|
48
|
-
send( old )
|
49
|
-
### use read_attribute( old ) instead? why? why not??
|
50
|
-
# see http://www.davidverhasselt.com/2011/06/28/5-ways-to-set-attributes-in-activerecord/
|
51
|
-
end
|
52
|
-
## todo: check for boolean values - add new? version too ??
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.alias_attr_writer( new, old )
|
56
|
-
define_method( "#{new}=" ) do |value|
|
57
|
-
send( "#{old}=", value )
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def self.alias_attr( new, old )
|
62
|
-
alias_attr_reader( new, old )
|
63
|
-
alias_attr_writer( new, old )
|
64
|
-
end
|
65
|
-
|
66
|
-
###################
|
67
|
-
#
|
68
|
-
#
|
69
|
-
# e.g. use like:
|
70
|
-
#
|
71
|
-
# def published
|
72
|
-
# read_attribute_w_fallbacks( :published, :touched )
|
73
|
-
# end
|
74
|
-
#
|
75
|
-
# or use macro e.g.
|
76
|
-
#
|
77
|
-
# attr_reader_w_fallbacks :published, :touched
|
78
|
-
|
79
|
-
|
80
|
-
def self.attr_reader_w_fallbacks( *keys )
|
81
|
-
define_method( keys[0] ) do
|
82
|
-
read_attribute_w_fallbacks( keys )
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def read_attribute_w_fallbacks( *keys )
|
87
|
-
### todo: use a different name e.g.:
|
88
|
-
## read_attribute_cascade ?? - does anything like this exists already?
|
89
|
-
## why? why not?
|
90
|
-
keys.each do |key|
|
91
|
-
value = read_attribute( key )
|
92
|
-
return value unless value.nil?
|
93
|
-
end
|
94
|
-
value # fallthrough? return latest value (will be nil) --or return just nil - why? why not??
|
95
|
-
end
|
96
|
-
|
97
|
-
|
98
|
-
###############
|
99
|
-
# random
|
100
|
-
#
|
101
|
-
#
|
102
|
-
# e.g. use like:
|
103
|
-
#
|
104
|
-
# beer_of_the_week = Beer.rnd
|
105
|
-
|
106
|
-
|
107
|
-
def self.rnd
|
108
|
-
## works w/ sqlite3 and postgresql
|
109
|
-
## - check if it works w/ mysql/mariadb too ? suppots offset and limit in SQL?
|
110
|
-
|
111
|
-
## todo: use ::rand -- and lets add an self.rand alias too ??
|
112
|
-
## check if ::rand call works
|
113
|
-
rnd_offset = rand( self.count ) ## NB: call "global" std lib rand
|
114
|
-
|
115
|
-
self.offset( rnd_offset ).limit( 1 ).first
|
116
|
-
end
|
117
|
-
|
118
|
-
|
119
|
-
end # class ActiveRecord::Base
|
120
|
-
|
32
|
+
require 'activerecord/utils/alias'
|
33
|
+
require 'activerecord/utils/random'
|
121
34
|
|
122
35
|
|
123
36
|
puts ActiveRecord::Utils.banner # say hello
|
124
37
|
|
38
|
+
### puts "root: >#{ActiveRecord::Utils.root}<" # check root path (remove later)
|
39
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
|
2
|
+
module ActiveRecord
|
3
|
+
class Base
|
4
|
+
|
5
|
+
### note:
|
6
|
+
## alias_method will NOT work for activerecord attributes
|
7
|
+
## - attribute reader/writer will NOT exist on startup
|
8
|
+
# thus, lets add a new alias_attr that will
|
9
|
+
# send message / forward method call on demand
|
10
|
+
#
|
11
|
+
# e.g. use like:
|
12
|
+
#
|
13
|
+
# alias_attr :abvii, :abv
|
14
|
+
|
15
|
+
##
|
16
|
+
# todo: add opts={} e.g. lets us add, for example, depreciated: true ??
|
17
|
+
# - will issue a warning
|
18
|
+
|
19
|
+
def self.alias_attr_reader( new, old )
|
20
|
+
define_method( new ) do
|
21
|
+
send( old )
|
22
|
+
### use read_attribute( old ) instead? why? why not??
|
23
|
+
# see http://www.davidverhasselt.com/2011/06/28/5-ways-to-set-attributes-in-activerecord/
|
24
|
+
end
|
25
|
+
## todo: check for boolean values - add new? version too ??
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.alias_attr_writer( new, old )
|
29
|
+
define_method( "#{new}=" ) do |value|
|
30
|
+
send( "#{old}=", value )
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.alias_attr( new, old )
|
35
|
+
alias_attr_reader( new, old )
|
36
|
+
alias_attr_writer( new, old )
|
37
|
+
end
|
38
|
+
|
39
|
+
###################
|
40
|
+
#
|
41
|
+
#
|
42
|
+
# e.g. use like:
|
43
|
+
#
|
44
|
+
# def published
|
45
|
+
# read_attribute_w_fallbacks( :published, :touched )
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# or use macro e.g.
|
49
|
+
#
|
50
|
+
# attr_reader_w_fallbacks :published, :touched
|
51
|
+
|
52
|
+
|
53
|
+
def self.attr_reader_w_fallbacks( *keys )
|
54
|
+
define_method( keys[0] ) do
|
55
|
+
read_attribute_w_fallbacks( keys )
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def read_attribute_w_fallbacks( *keys )
|
60
|
+
### todo: use a different name e.g.:
|
61
|
+
## read_attribute_cascade ?? - does anything like this exists already?
|
62
|
+
## why? why not?
|
63
|
+
keys.each do |key|
|
64
|
+
value = read_attribute( key )
|
65
|
+
break unless value.nil? # if value.nil? == false
|
66
|
+
end
|
67
|
+
value # fallthrough -- return latest value (will be nil)
|
68
|
+
end
|
69
|
+
|
70
|
+
end # class Base
|
71
|
+
end # module ActiveRecord
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
class Base
|
5
|
+
|
6
|
+
###
|
7
|
+
# todo/fix:
|
8
|
+
# better check if responds_to? find_by! and find_by ???
|
9
|
+
puts " [ActiveRecord::Utils] adding find_by n find_by! finders for 3.x series"
|
10
|
+
|
11
|
+
## lets us use ActiveRecord 4-style find_by and find_by! in ActiveRecord 3.x
|
12
|
+
def self.find_by( hash )
|
13
|
+
self.where( hash ).first
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.find_by!( hash )
|
17
|
+
self.where( hash ).first! ## or use: first or raise RecordNotFound directly??
|
18
|
+
end
|
19
|
+
|
20
|
+
end # class Base
|
21
|
+
end # module ActiveRecord
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
class Base
|
5
|
+
|
6
|
+
###############
|
7
|
+
# random
|
8
|
+
#
|
9
|
+
#
|
10
|
+
# e.g. use like:
|
11
|
+
#
|
12
|
+
# beer_of_the_week = Beer.rnd
|
13
|
+
|
14
|
+
def self.rnd
|
15
|
+
## works w/ sqlite3 and postgresql
|
16
|
+
## - check if it works w/ mysql/mariadb too ? suppots offset and limit in SQL?
|
17
|
+
|
18
|
+
## todo: use ::rand -- and lets add an self.rand alias too ??
|
19
|
+
## check if ::rand call works
|
20
|
+
rnd_offset = rand( self.count ) ## NB: call "global" std lib rand
|
21
|
+
|
22
|
+
self.offset( rnd_offset ).limit( 1 ).first
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
end # class Base
|
27
|
+
end # module ActiveRecord
|
data/test/helper.rb
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
|
2
|
+
## $:.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
## minitest setup
|
5
|
+
|
6
|
+
# require 'minitest/unit'
|
7
|
+
require 'minitest/autorun'
|
8
|
+
|
9
|
+
# include MiniTest::Unit # lets us use TestCase instead of MiniTest::Unit::TestCase
|
10
|
+
|
11
|
+
|
12
|
+
# ruby stdlibs
|
13
|
+
|
14
|
+
require 'json'
|
15
|
+
require 'uri'
|
16
|
+
require 'pp'
|
17
|
+
require 'logger'
|
18
|
+
|
19
|
+
# ruby gems
|
20
|
+
|
21
|
+
require 'active_record'
|
22
|
+
|
23
|
+
require 'logutils'
|
24
|
+
require 'logutils/db' # NB: explict require required for LogDb (not automatic)
|
25
|
+
|
26
|
+
|
27
|
+
# our own code
|
28
|
+
|
29
|
+
require 'activerecord/utils'
|
30
|
+
|
31
|
+
|
32
|
+
class Beer < ActiveRecord::Base
|
33
|
+
alias_attr :abvii, :abv
|
34
|
+
alias_attr_reader :abvread, :abv
|
35
|
+
alias_attr_writer :abvwrite, :abv
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
class CreateBeerDb
|
41
|
+
|
42
|
+
def up
|
43
|
+
ActiveRecord::Schema.define do
|
44
|
+
|
45
|
+
create_table :beers do |t|
|
46
|
+
t.string :key, null: false
|
47
|
+
t.string :name, null: false
|
48
|
+
|
49
|
+
t.string :web # optional url link (e.g. )
|
50
|
+
t.integer :since # optional year (e.g. 1896)
|
51
|
+
|
52
|
+
t.decimal :abv # Alcohol by volume (abbreviated as ABV, abv, or alc/vol) e.g. 4.9 %
|
53
|
+
t.decimal :og # malt extract (original gravity) in plato
|
54
|
+
|
55
|
+
t.timestamps
|
56
|
+
end
|
57
|
+
end # Schema.define
|
58
|
+
end # method up
|
59
|
+
|
60
|
+
end # class CreateMovieDb
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
def setup_in_memory_db
|
65
|
+
# Database Setup & Config
|
66
|
+
|
67
|
+
db_config = {
|
68
|
+
adapter: 'sqlite3',
|
69
|
+
database: ':memory:'
|
70
|
+
}
|
71
|
+
|
72
|
+
pp db_config
|
73
|
+
|
74
|
+
ActiveRecord::Base.logger = Logger.new( STDOUT )
|
75
|
+
## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
|
76
|
+
|
77
|
+
## NB: every connect will create a new empty in memory db
|
78
|
+
ActiveRecord::Base.establish_connection( db_config )
|
79
|
+
|
80
|
+
|
81
|
+
## build schema
|
82
|
+
LogDb.create
|
83
|
+
CreateBeerDb.new.up
|
84
|
+
|
85
|
+
Beer.create!( key: 'ottakringerhelles', name: 'Ottakringer Helles' )
|
86
|
+
Beer.create!( key: 'ottakringerzwicklrot', name: 'Ottakringer Zwickl Rot' )
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
setup_in_memory_db()
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestFinders < MiniTest::Unit::TestCase
|
6
|
+
|
7
|
+
|
8
|
+
def test_find_by
|
9
|
+
b = Beer.find_by( key: 'ottakringerhelles' )
|
10
|
+
assert_equal 'Ottakringer Helles', b.name
|
11
|
+
|
12
|
+
b = Beer.find_by( key: 'zwettlerdunkles' )
|
13
|
+
assert_equal nil, b
|
14
|
+
|
15
|
+
b = Beer.find_by!( key: 'ottakringerhelles' )
|
16
|
+
assert_equal 'Ottakringer Helles', b.name
|
17
|
+
|
18
|
+
## fix/todo: add
|
19
|
+
## raises RecordNotfound
|
20
|
+
## b = Beer.find_by!( key: 'zwettlerdunkles' )
|
21
|
+
end
|
22
|
+
|
23
|
+
end # class TestFinders
|
24
|
+
|
data/test/test_random.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestRandom < MiniTest::Unit::TestCase
|
6
|
+
|
7
|
+
def test_rnd
|
8
|
+
b = Beer.rnd
|
9
|
+
assert_equal false, b.name.blank?
|
10
|
+
assert_equal false, b.key.blank?
|
11
|
+
|
12
|
+
## try another
|
13
|
+
b = Beer.rnd
|
14
|
+
assert_equal false, b.name.blank?
|
15
|
+
assert_equal false, b.key.blank?
|
16
|
+
end
|
17
|
+
|
18
|
+
end # class TestRandom
|
metadata
CHANGED
@@ -1,54 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Gerald Bauer
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-04-15 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: logutils
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: rdoc
|
16
|
-
requirement:
|
17
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
18
30
|
requirements:
|
19
31
|
- - ~>
|
20
32
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
33
|
+
version: '4.0'
|
22
34
|
type: :development
|
23
35
|
prerelease: false
|
24
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.0'
|
25
41
|
- !ruby/object:Gem::Dependency
|
26
42
|
name: hoe
|
27
|
-
requirement:
|
28
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
29
44
|
requirements:
|
30
45
|
- - ~>
|
31
46
|
- !ruby/object:Gem::Version
|
32
|
-
version: '3.
|
47
|
+
version: '3.10'
|
33
48
|
type: :development
|
34
49
|
prerelease: false
|
35
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.10'
|
36
55
|
description: activerecord-utils - utilities (e.g. random, alias_attr, etc.) for activerecord
|
37
56
|
email: webslideshow@googlegroups.com
|
38
57
|
executables: []
|
39
58
|
extensions: []
|
40
59
|
extra_rdoc_files:
|
60
|
+
- History.md
|
41
61
|
- Manifest.txt
|
62
|
+
- README.md
|
42
63
|
files:
|
43
64
|
- History.md
|
44
65
|
- Manifest.txt
|
45
66
|
- README.md
|
46
67
|
- Rakefile
|
47
68
|
- lib/activerecord/utils.rb
|
69
|
+
- lib/activerecord/utils/alias.rb
|
70
|
+
- lib/activerecord/utils/comp3.rb
|
71
|
+
- lib/activerecord/utils/random.rb
|
48
72
|
- lib/activerecord/utils/version.rb
|
73
|
+
- test/helper.rb
|
74
|
+
- test/test_finders.rb
|
75
|
+
- test/test_random.rb
|
76
|
+
- .gemtest
|
49
77
|
homepage: https://github.com/rubylibs/activerecord-utils
|
50
78
|
licenses:
|
51
79
|
- Public Domain
|
80
|
+
metadata: {}
|
52
81
|
post_install_message:
|
53
82
|
rdoc_options:
|
54
83
|
- --main
|
@@ -56,21 +85,21 @@ rdoc_options:
|
|
56
85
|
require_paths:
|
57
86
|
- lib
|
58
87
|
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
88
|
requirements:
|
61
89
|
- - ! '>='
|
62
90
|
- !ruby/object:Gem::Version
|
63
91
|
version: 1.9.2
|
64
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
93
|
requirements:
|
67
94
|
- - ! '>='
|
68
95
|
- !ruby/object:Gem::Version
|
69
96
|
version: '0'
|
70
97
|
requirements: []
|
71
|
-
rubyforge_project:
|
72
|
-
rubygems_version: 1.
|
98
|
+
rubyforge_project:
|
99
|
+
rubygems_version: 2.1.10
|
73
100
|
signing_key:
|
74
|
-
specification_version:
|
101
|
+
specification_version: 4
|
75
102
|
summary: activerecord-utils - utilities (e.g. random, alias_attr, etc.) for activerecord
|
76
|
-
test_files:
|
103
|
+
test_files:
|
104
|
+
- test/test_finders.rb
|
105
|
+
- test/test_random.rb
|