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 ADDED
@@ -0,0 +1,7 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
6
+ .DS_Store
7
+ spec/debug.log
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
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in birthday.gemspec
4
+ gemspec
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.
@@ -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
@@ -0,0 +1,9 @@
1
+ require 'bundler'
2
+ require 'rspec/core/rake_task'
3
+
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ desc "Run specs"
7
+ RSpec::Core::RakeTask.new
8
+
9
+ task :default => :spec
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,11 @@
1
+ # Birthday
2
+ module Railslove
3
+ module Acts #:nodoc:
4
+ module Birthday #:nodoc:
5
+ module Adapters
6
+ class Mysql2Adapter < MysqlAdapter
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -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,7 @@
1
+ module Railslove
2
+ module Acts
3
+ module Birthday
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ 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
@@ -0,0 +1,9 @@
1
+ mysql:
2
+ adapter: mysql2
3
+ database: birthday_plugin_test
4
+ username:
5
+ encoding: utf8
6
+ postgres:
7
+ adapter: postgresql
8
+ database: birthday_plugin_test
9
+ username: postgres
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
@@ -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: