birthday 0.0.1
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.
- data/.gitignore +7 -0
- data/.rspec +1 -0
- data/.travis.yml +13 -0
- data/Gemfile +4 -0
- data/README.md +58 -0
- data/RUNNING_UNIT_TESTS +9 -0
- data/Rakefile +9 -0
- data/birthday.gemspec +29 -0
- data/lib/birthday.rb +7 -0
- data/lib/railslove/acts/birthday/adapters/mysql2_adapter.rb +11 -0
- data/lib/railslove/acts/birthday/adapters/mysql_adapter.rb +28 -0
- data/lib/railslove/acts/birthday/adapters/postgresql_adapter.rb +26 -0
- data/lib/railslove/acts/birthday/birthday.rb +76 -0
- data/lib/railslove/acts/birthday/version.rb +7 -0
- data/spec/birthday_spec.rb +95 -0
- data/spec/database.yml +9 -0
- data/spec/schema.rb +13 -0
- data/spec/spec_helper.rb +50 -0
- metadata +186 -0
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.travis.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
rvm:
|
2
|
+
- 1.8.7 # (current default)
|
3
|
+
- 1.9.2
|
4
|
+
before_script:
|
5
|
+
- "psql -c 'create database birthday_plugin_test;' -U postgres"
|
6
|
+
- "mysql -e 'create database birthday_plugin_test;'"
|
7
|
+
- "gem install rails -v 3.0.9"
|
8
|
+
- "gem install rails -v 2.3.8"
|
9
|
+
env:
|
10
|
+
- DB=mysql RAILS=3.0.9
|
11
|
+
- DB=postgres RAILS=3.0.9
|
12
|
+
- DB=mysql RAILS=2.3.8
|
13
|
+
- DB=postgres RAILS=2.3.8
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# Birthday
|
2
|
+
|
3
|
+
This is a small gem that hooks into ActiveRecord and allows to tag a database field (date or datetime) as birthday, allowing to find birthdays with ease.
|
4
|
+
|
5
|
+
## How To Install
|
6
|
+
|
7
|
+
After the gem has been properly tested, it will be released on RubyGems, and will be available to be installed with:
|
8
|
+
|
9
|
+
gem install birthday
|
10
|
+
|
11
|
+
## Synopsis
|
12
|
+
|
13
|
+
Read [a blog post about the gem](http://blog.railslove.com/2011/10/17/birthday-gem-easy-anniversaries-handling-ruby/) at Railslove blog to get a comprehensive guide to usage of this gem.
|
14
|
+
|
15
|
+
### To do
|
16
|
+
|
17
|
+
* Test PostgreSQL
|
18
|
+
* kick class_eval?
|
19
|
+
* make tests more "aware" of environment
|
20
|
+
|
21
|
+
## Note on Patches/Pull Requests
|
22
|
+
|
23
|
+
* Fork the project.
|
24
|
+
* Create a feature branch
|
25
|
+
* Make your feature addition or bug fix.
|
26
|
+
* Add tests.
|
27
|
+
* Commit, do not mess with Rakefile, version, or history.
|
28
|
+
* Send me a pull request.
|
29
|
+
|
30
|
+
## Copyright
|
31
|
+
|
32
|
+
Copyright (c) 2011 Railslove
|
33
|
+
|
34
|
+
## Main contributors
|
35
|
+
|
36
|
+
* [@Holek (Mike Połtyn)](http://github.com/Holek)
|
37
|
+
|
38
|
+
## License
|
39
|
+
|
40
|
+
The MIT License
|
41
|
+
|
42
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
43
|
+
of this software and associated documentation files (the "Software"), to deal
|
44
|
+
in the Software without restriction, including without limitation the rights
|
45
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
46
|
+
copies of the Software, and to permit persons to whom the Software is
|
47
|
+
furnished to do so, subject to the following conditions:
|
48
|
+
|
49
|
+
The above copyright notice and this permission notice shall be included in
|
50
|
+
all copies or substantial portions of the Software.
|
51
|
+
|
52
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
53
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
54
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
55
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
56
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
57
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
58
|
+
THE SOFTWARE.
|
data/RUNNING_UNIT_TESTS
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
1. Pick Rails version. Either dump this plugin in a Rails app and run it from there, or specify it as an ENV var:
|
2
|
+
|
3
|
+
RAILS=3.0.9 rspec spec/birthday_spec.rb
|
4
|
+
|
5
|
+
2. Setup your database. By default mysql is used, and no further setup is necessary. You can pick any of the listed databases in test/database.yml. Be sure to create the database first.
|
6
|
+
|
7
|
+
DB=postgres rspec spec/birthday_spec.rb
|
8
|
+
|
9
|
+
3. Profit!!
|
data/Rakefile
ADDED
data/birthday.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "railslove/acts/birthday/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "birthday"
|
7
|
+
s.version = Railslove::Acts::Birthday::VERSION
|
8
|
+
s.authors = ["Mike Połtyn"]
|
9
|
+
s.email = ["mike@railslove.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Birthday gem allows to tag date and datetime fields in ActiveRecord}
|
12
|
+
s.description = %q{Birthday gem creates convienent methods for date and datetime fields in ActiveRecord, making it possible to look for birthdays without a hassle.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "birthday"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
s.add_development_dependency "rake"
|
23
|
+
s.add_development_dependency "rspec"
|
24
|
+
s.add_development_dependency "mysql2", '0.3.6'
|
25
|
+
s.add_development_dependency "delorean"
|
26
|
+
s.add_development_dependency "pg"
|
27
|
+
s.add_runtime_dependency "activerecord"
|
28
|
+
s.add_runtime_dependency "activesupport"
|
29
|
+
end
|
data/lib/birthday.rb
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
require "railslove/acts/birthday/birthday"
|
2
|
+
require "railslove/acts/birthday/adapters/mysql_adapter"
|
3
|
+
require "railslove/acts/birthday/adapters/mysql2_adapter"
|
4
|
+
require "railslove/acts/birthday/adapters/postgresql_adapter"
|
5
|
+
require "railslove/acts/birthday/version"
|
6
|
+
|
7
|
+
ActiveRecord::Base.send :include, ::Railslove::Acts::Birthday
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Birthday
|
2
|
+
module Railslove
|
3
|
+
module Acts #:nodoc:
|
4
|
+
module Birthday #:nodoc:
|
5
|
+
module Adapters
|
6
|
+
class MysqlAdapter
|
7
|
+
def self.scope_hash(field, date_start, date_end)
|
8
|
+
date_start = date_start.to_date
|
9
|
+
if ((date_end.respond_to?(:empty?) && date_end.empty?) || !date_end)
|
10
|
+
where_sql = "DATE_FORMAT(`#{field}`, '%m%d') = \"#{date_start.strftime('%m%d')}\""
|
11
|
+
else
|
12
|
+
date_end = date_end.to_date
|
13
|
+
if date_end.strftime('%m%d') < date_start.strftime('%m%d')
|
14
|
+
where_sql = "(DATE_FORMAT(`#{field}`, '%m%d') >= \"0101\""
|
15
|
+
where_sql << " AND DATE_FORMAT(`#{field}`, '%m%d') <= \"#{date_start.strftime('%m%d')}\")"
|
16
|
+
where_sql << " OR (DATE_FORMAT(`#{field}`, '%m%d') >= \"#{date_end.strftime('%m%d')}\""
|
17
|
+
where_sql << " AND DATE_FORMAT(`#{field}`, '%m%d') <= \"1231\")"
|
18
|
+
else
|
19
|
+
where_sql = "DATE_FORMAT(`#{field}`, '%m%d') >= \"#{date_start.strftime('%m%d')}\" AND DATE_FORMAT(`#{field}`, '%m%d') <= \"#{date_end.strftime('%m%d')}\""
|
20
|
+
end
|
21
|
+
end
|
22
|
+
{ :conditions => where_sql }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Birthday
|
2
|
+
module Railslove
|
3
|
+
module Acts #:nodoc:
|
4
|
+
module Birthday #:nodoc:
|
5
|
+
module Adapters
|
6
|
+
class PostgreSQLAdapter
|
7
|
+
def self.scope_hash(field, date_start, date_end)
|
8
|
+
date_start = date_start.to_date
|
9
|
+
if ((date_end.respond_to?(:empty?) && date_end.empty?) || !date_end)
|
10
|
+
where_sql = "to_char(\"#{field}\", 'MMDD') = '#{date_start.strftime('%m%d')}'"
|
11
|
+
else
|
12
|
+
date_end = date_end.to_date
|
13
|
+
if date_end.strftime('%m%d') < date_start.strftime('%m%d')
|
14
|
+
where_sql = "to_char(\"#{field}\", 'MMDD') BETWEEN '0101' AND '#{date_end.strftime('%m%d')}'"
|
15
|
+
where_sql << "OR to_char(\"#{field}\", 'MMDD') BETWEEN '#{date_start.strftime('%m%d')}' AND '1231'"
|
16
|
+
else
|
17
|
+
where_sql = "to_char(\"#{field}\", 'MMDD') BETWEEN '#{date_start.strftime('%m%d')}' AND '#{date_end.strftime('%m%d')}'"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
{ :conditions => where_sql }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# Birthday
|
2
|
+
module Railslove
|
3
|
+
module Acts #:nodoc:
|
4
|
+
module Birthday #:nodoc:
|
5
|
+
def self.included(base)
|
6
|
+
base.extend ClassMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
|
11
|
+
# Expects an array of date or datetime fields. If the first object
|
12
|
+
# in passed array is a class with a class method `scope_hash`
|
13
|
+
# class SqliteAdapter
|
14
|
+
# def self.scope_hash(field, date_start, date_end)
|
15
|
+
# # do some magic and return scope hash you can use
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# then this class is used as an adapter to create its scope for birthday finders.
|
20
|
+
#
|
21
|
+
# An example code in basic model would be:
|
22
|
+
#
|
23
|
+
# class Person < ActiveRecord::Base
|
24
|
+
# acts_as_birthday :birthday, :created_at
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# This will create scopes:
|
28
|
+
# Person.find_birthdays_for
|
29
|
+
# Person.find_created_ats_for
|
30
|
+
# and instance methods:
|
31
|
+
# person = Person.find(1)
|
32
|
+
# person.birthday_age => 34
|
33
|
+
# person.birthday_today? => true/false
|
34
|
+
# person.created_at_age => 2
|
35
|
+
# person.created_at_today? => true/false
|
36
|
+
def acts_as_birthday(*args)
|
37
|
+
args = args.to_a.flatten.compact
|
38
|
+
klass = args.shift if args.first.class == Class
|
39
|
+
if klass && klass.class == Class
|
40
|
+
@@_birthday_backend = klass
|
41
|
+
else
|
42
|
+
@@_birthday_backend ||= "Railslove::Acts::Birthday::Adapters::#{ActiveRecord::Base.connection.class.name.split("::").last}".constantize
|
43
|
+
end
|
44
|
+
|
45
|
+
birthday_fields = args.map(&:to_sym)
|
46
|
+
|
47
|
+
scope_method = ActiveRecord::VERSION::MAJOR == 3 ? 'scope' : 'named_scope'
|
48
|
+
|
49
|
+
birthday_fields.each do |field|
|
50
|
+
self.send(scope_method, :"find_#{field.to_s.pluralize}_for", lambda{ |*scope_args|
|
51
|
+
raise ArgumentError if scope_args.empty? or scope_args.size > 2
|
52
|
+
date_start, date_end = *scope_args
|
53
|
+
@@_birthday_backend.scope_hash(field, date_start, date_end)
|
54
|
+
})
|
55
|
+
|
56
|
+
class_eval %{
|
57
|
+
def #{field}_age
|
58
|
+
return nil unless self.#{field}?
|
59
|
+
today = Date.today
|
60
|
+
age = today.year - #{field}.year
|
61
|
+
age -= 1 if today.month < #{field}.month || (today.month == #{field}.month && today.mday < #{field}.mday)
|
62
|
+
age
|
63
|
+
end
|
64
|
+
|
65
|
+
def #{field}_today?
|
66
|
+
return nil unless self.#{field}?
|
67
|
+
Date.today.strftime('%m%d') == #{field}.strftime('%m%d')
|
68
|
+
end
|
69
|
+
}
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
+
|
3
|
+
class Person < ActiveRecord::Base
|
4
|
+
acts_as_birthday :birthday
|
5
|
+
end
|
6
|
+
|
7
|
+
class Marriage < ActiveRecord::Base
|
8
|
+
acts_as_birthday :anniversary
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Marriage do
|
12
|
+
|
13
|
+
before :each do
|
14
|
+
@m1 = Marriage.create(:faithful => true, :anniversary => Date.parse('2009-09-09')).reload
|
15
|
+
@m2 = Marriage.create(:faithful => false, :anniversary => Date.parse('2009-08-08')).reload
|
16
|
+
end
|
17
|
+
|
18
|
+
after :each do
|
19
|
+
back_to_the_present
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'check anniversary_today? correctly' do
|
23
|
+
time_travel_to Date.parse('2011-09-09')
|
24
|
+
@m1.should be_anniversary_today
|
25
|
+
@m2.should_not be_anniversary_today
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'check anniversary_age correctly' do
|
29
|
+
time_travel_to Date.parse('2011-09-08')
|
30
|
+
@m1.anniversary_age.should eq(1)
|
31
|
+
@m2.anniversary_age.should eq(2)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'finds people\'s by anniversary date' do
|
35
|
+
time_travel_to Date.parse('2011-08-08')
|
36
|
+
anniversaries_today = Marriage.find_anniversaries_for(Date.today)
|
37
|
+
anniversaries_today.should_not include(@m1)
|
38
|
+
anniversaries_today.should include(@m2)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'finds people\'s by anniversary dates' do
|
42
|
+
anniversaries = Marriage.find_anniversaries_for(Date.parse('2011-08-01'), Date.parse('2011-12-12'))
|
43
|
+
anniversaries.should include(@m1)
|
44
|
+
anniversaries.should include(@m2)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'finds people\'s by anniversary dates with years overlapping' do
|
48
|
+
anniversaries = Marriage.find_anniversaries_for(Date.parse('2011-09-01'), Date.parse('2012-08-12'))
|
49
|
+
anniversaries.should include(@m1)
|
50
|
+
anniversaries.should include(@m2)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe Person do
|
55
|
+
|
56
|
+
before :each do
|
57
|
+
@p1 = Person.create(:name => "Twilight Sparkle", :birthday => Date.parse('2006-09-09')).reload
|
58
|
+
@p2 = Person.create(:name => "Rainbow Dash", :birthday => Date.parse('2004-08-08')).reload
|
59
|
+
end
|
60
|
+
|
61
|
+
after :each do
|
62
|
+
back_to_the_present
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'check birthday_today? correctly' do
|
66
|
+
time_travel_to Date.parse('2011-09-09')
|
67
|
+
@p1.should be_birthday_today
|
68
|
+
@p2.should_not be_birthday_today
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'check birthday_age correctly' do
|
72
|
+
time_travel_to Date.parse('2011-09-08')
|
73
|
+
@p1.birthday_age.should eq(4)
|
74
|
+
@p2.birthday_age.should eq(7)
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'finds people\'s by birthday date' do
|
78
|
+
time_travel_to Date.parse('2011-08-08')
|
79
|
+
birthdays_today = Person.find_birthdays_for(Date.today)
|
80
|
+
birthdays_today.should_not include(@p1)
|
81
|
+
birthdays_today.should include(@p2)
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'finds people\'s by birthday dates' do
|
85
|
+
birthdays = Person.find_birthdays_for(Date.parse('2011-08-01'), Date.parse('2011-12-12'))
|
86
|
+
birthdays.should include(@p1)
|
87
|
+
birthdays.should include(@p2)
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'finds people\'s by birthday dates with years overlapping' do
|
91
|
+
birthdays = Person.find_birthdays_for(Date.parse('2011-09-01'), Date.parse('2012-08-12'))
|
92
|
+
birthdays.should include(@p1)
|
93
|
+
birthdays.should include(@p2)
|
94
|
+
end
|
95
|
+
end
|
data/spec/database.yml
ADDED
data/spec/schema.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
ActiveRecord::Schema.define(:version => 1) do
|
2
|
+
|
3
|
+
create_table :people, :force => true do |t|
|
4
|
+
t.column :name, :string
|
5
|
+
t.column :birthday, :date
|
6
|
+
end
|
7
|
+
|
8
|
+
create_table :marriages, :force => true do |t|
|
9
|
+
t.column :faithful, :boolean
|
10
|
+
t.column :anniversary, :datetime
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__))
|
2
|
+
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
require 'rubygems'
|
6
|
+
require 'rspec'
|
7
|
+
|
8
|
+
def fixture(file_name)
|
9
|
+
File.read(fixture_path(file_name))
|
10
|
+
end
|
11
|
+
|
12
|
+
def fixture_path(file_name)
|
13
|
+
File.expand_path(File.dirname(__FILE__)) + "/fixtures/#{file_name}"
|
14
|
+
end
|
15
|
+
|
16
|
+
if ENV['RAILS'].nil?
|
17
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../../../../config/environment.rb'))
|
18
|
+
else
|
19
|
+
# specific rails version targeted
|
20
|
+
# load activerecord and activesupport and plugin manually
|
21
|
+
require 'active_record'
|
22
|
+
require 'active_support'
|
23
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
24
|
+
Dir["#{$LOAD_PATH.last}/**/*.rb"].each do |path|
|
25
|
+
require path[$LOAD_PATH.last.size + 1..-1]
|
26
|
+
end
|
27
|
+
require "railslove/acts/birthday/birthday"
|
28
|
+
end
|
29
|
+
require 'delorean'
|
30
|
+
require 'yaml'
|
31
|
+
config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
32
|
+
adapter = ENV['DB'] || 'mysql'
|
33
|
+
case adapter
|
34
|
+
when 'mysql'
|
35
|
+
require 'mysql2'
|
36
|
+
when 'postgres'
|
37
|
+
require 'pg'
|
38
|
+
else
|
39
|
+
require adapter
|
40
|
+
end
|
41
|
+
|
42
|
+
ActiveRecord::Base.configurations.update config
|
43
|
+
ActiveRecord::Base.establish_connection(adapter)
|
44
|
+
ActiveRecord::Base.default_timezone = :utc
|
45
|
+
|
46
|
+
load(File.dirname(__FILE__) + "/schema.rb")
|
47
|
+
|
48
|
+
RSpec.configure do |config|
|
49
|
+
config.include Delorean
|
50
|
+
end
|
metadata
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: birthday
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- "Mike Po\xC5\x82tyn"
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-10-28 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rake
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rspec
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: mysql2
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - "="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 31
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
- 3
|
60
|
+
- 6
|
61
|
+
version: 0.3.6
|
62
|
+
type: :development
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: delorean
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
type: :development
|
77
|
+
version_requirements: *id004
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: pg
|
80
|
+
prerelease: false
|
81
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
type: :development
|
91
|
+
version_requirements: *id005
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: activerecord
|
94
|
+
prerelease: false
|
95
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
104
|
+
type: :runtime
|
105
|
+
version_requirements: *id006
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: activesupport
|
108
|
+
prerelease: false
|
109
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
hash: 3
|
115
|
+
segments:
|
116
|
+
- 0
|
117
|
+
version: "0"
|
118
|
+
type: :runtime
|
119
|
+
version_requirements: *id007
|
120
|
+
description: Birthday gem creates convienent methods for date and datetime fields in ActiveRecord, making it possible to look for birthdays without a hassle.
|
121
|
+
email:
|
122
|
+
- mike@railslove.com
|
123
|
+
executables: []
|
124
|
+
|
125
|
+
extensions: []
|
126
|
+
|
127
|
+
extra_rdoc_files: []
|
128
|
+
|
129
|
+
files:
|
130
|
+
- .gitignore
|
131
|
+
- .rspec
|
132
|
+
- .travis.yml
|
133
|
+
- Gemfile
|
134
|
+
- README.md
|
135
|
+
- RUNNING_UNIT_TESTS
|
136
|
+
- Rakefile
|
137
|
+
- birthday.gemspec
|
138
|
+
- lib/birthday.rb
|
139
|
+
- lib/railslove/acts/birthday/adapters/mysql2_adapter.rb
|
140
|
+
- lib/railslove/acts/birthday/adapters/mysql_adapter.rb
|
141
|
+
- lib/railslove/acts/birthday/adapters/postgresql_adapter.rb
|
142
|
+
- lib/railslove/acts/birthday/birthday.rb
|
143
|
+
- lib/railslove/acts/birthday/version.rb
|
144
|
+
- spec/birthday_spec.rb
|
145
|
+
- spec/database.yml
|
146
|
+
- spec/schema.rb
|
147
|
+
- spec/spec_helper.rb
|
148
|
+
homepage: ""
|
149
|
+
licenses: []
|
150
|
+
|
151
|
+
post_install_message:
|
152
|
+
rdoc_options: []
|
153
|
+
|
154
|
+
require_paths:
|
155
|
+
- lib
|
156
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
157
|
+
none: false
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
hash: 3
|
162
|
+
segments:
|
163
|
+
- 0
|
164
|
+
version: "0"
|
165
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
|
+
none: false
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
hash: 3
|
171
|
+
segments:
|
172
|
+
- 0
|
173
|
+
version: "0"
|
174
|
+
requirements: []
|
175
|
+
|
176
|
+
rubyforge_project: birthday
|
177
|
+
rubygems_version: 1.8.6
|
178
|
+
signing_key:
|
179
|
+
specification_version: 3
|
180
|
+
summary: Birthday gem allows to tag date and datetime fields in ActiveRecord
|
181
|
+
test_files:
|
182
|
+
- spec/birthday_spec.rb
|
183
|
+
- spec/database.yml
|
184
|
+
- spec/schema.rb
|
185
|
+
- spec/spec_helper.rb
|
186
|
+
has_rdoc:
|