by_star 3.0.0 → 4.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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/mysql.yml +92 -0
  3. data/.github/workflows/postgresql.yml +99 -0
  4. data/.gitignore +6 -5
  5. data/.travis.yml +92 -61
  6. data/CHANGELOG.md +63 -44
  7. data/Gemfile +18 -18
  8. data/MIT-LICENSE +20 -20
  9. data/README.md +616 -577
  10. data/Rakefile +18 -18
  11. data/UPGRADING +4 -6
  12. data/by_star.gemspec +34 -34
  13. data/cleaner.rb +24 -24
  14. data/lib/by_star/base.rb +69 -68
  15. data/lib/by_star/between.rb +185 -156
  16. data/lib/by_star/directional.rb +35 -37
  17. data/lib/by_star/kernel/date.rb +41 -50
  18. data/lib/by_star/kernel/in_time_zone.rb +20 -0
  19. data/lib/by_star/kernel/time.rb +41 -41
  20. data/lib/by_star/normalization.rb +156 -127
  21. data/lib/by_star/orm/active_record/by_star.rb +75 -61
  22. data/lib/by_star/orm/mongoid/by_star.rb +90 -76
  23. data/lib/by_star/orm/mongoid/reorder.rb +23 -23
  24. data/lib/by_star/version.rb +3 -3
  25. data/lib/by_star.rb +18 -17
  26. data/spec/database.yml +15 -15
  27. data/spec/fixtures/active_record/models.rb +12 -12
  28. data/spec/fixtures/active_record/schema.rb +19 -19
  29. data/spec/fixtures/mongoid/models.rb +31 -31
  30. data/spec/fixtures/shared/seeds.rb +36 -26
  31. data/spec/gemfiles/Gemfile.rails +5 -0
  32. data/spec/gemfiles/Gemfile.rails32 +7 -0
  33. data/spec/gemfiles/Gemfile.rails40 +7 -7
  34. data/spec/gemfiles/Gemfile.rails41 +7 -7
  35. data/spec/gemfiles/Gemfile.rails42 +7 -7
  36. data/spec/gemfiles/Gemfile.rails50 +7 -10
  37. data/spec/gemfiles/Gemfile.rails51 +7 -10
  38. data/spec/gemfiles/Gemfile.rails52 +7 -0
  39. data/spec/gemfiles/Gemfile.rails60 +7 -0
  40. data/spec/gemfiles/Gemfile.rails61 +7 -0
  41. data/spec/integration/active_record/active_record_spec.rb +41 -38
  42. data/spec/integration/mongoid/mongoid_spec.rb +39 -37
  43. data/spec/integration/shared/at_time.rb +53 -0
  44. data/spec/integration/shared/between_dates.rb +99 -0
  45. data/spec/integration/shared/between_times.rb +99 -82
  46. data/spec/integration/shared/by_calendar_month.rb +55 -55
  47. data/spec/integration/shared/by_cweek.rb +54 -54
  48. data/spec/integration/shared/by_day.rb +120 -96
  49. data/spec/integration/shared/by_direction.rb +126 -172
  50. data/spec/integration/shared/by_fortnight.rb +48 -48
  51. data/spec/integration/shared/by_month.rb +50 -50
  52. data/spec/integration/shared/by_quarter.rb +49 -49
  53. data/spec/integration/shared/by_week.rb +54 -54
  54. data/spec/integration/shared/by_weekend.rb +49 -49
  55. data/spec/integration/shared/by_year.rb +48 -48
  56. data/spec/integration/shared/index_scope_parameter.rb +111 -0
  57. data/spec/integration/shared/offset_parameter.rb +32 -32
  58. data/spec/integration/shared/order_parameter.rb +36 -36
  59. data/spec/integration/shared/relative.rb +174 -174
  60. data/spec/spec_helper.rb +33 -29
  61. data/spec/unit/kernel_date_spec.rb +113 -113
  62. data/spec/unit/kernel_time_spec.rb +57 -57
  63. data/spec/unit/normalization_spec.rb +384 -305
  64. data/tmp/.gitignore +1 -1
  65. metadata +33 -21
  66. data/spec/gemfiles/Gemfile.master +0 -6
  67. data/spec/integration/shared/scope_parameter.rb +0 -73
@@ -1,61 +1,75 @@
1
- module ByStar
2
- module ActiveRecord
3
- extend ActiveSupport::Concern
4
-
5
- module ClassMethods
6
- include ::ByStar::Base
7
-
8
- protected
9
-
10
- def by_star_default_field
11
- "#{self.table_name}.created_at"
12
- end
13
-
14
- def by_star_point_query(scope, field, start_time, end_time)
15
- scope.where("#{field} >= ? AND #{field} <= ?", start_time, end_time)
16
- end
17
-
18
- def by_star_span_strict_query(scope, start_field, end_field, start_time, end_time)
19
- scope.where("#{start_field} >= ? AND #{start_field} <= ? AND #{end_field} >= ? AND #{end_field} <= ?", start_time, end_time, start_time, end_time)
20
- end
21
-
22
- def by_star_span_overlap_query(scope, start_field, end_field, start_time, end_time, options)
23
- scope.where("#{end_field} > ? AND #{start_field} < ?", start_time, end_time)
24
- end
25
-
26
- def by_star_before_query(scope, field, time)
27
- scope.where("#{field} <= ?", time)
28
- end
29
-
30
- def by_star_after_query(scope, field, time)
31
- scope.where("#{field} >= ?", time)
32
- end
33
-
34
- def by_star_order(scope, order)
35
- scope.order(order)
36
- end
37
-
38
- def oldest_query(options={})
39
- field = by_star_start_field(options)
40
- by_star_scope(options).reorder("#{field} ASC").first
41
- end
42
-
43
- def newest_query(options={})
44
- field = by_star_start_field(options)
45
- by_star_scope(options).reorder("#{field} DESC").first
46
- end
47
- end
48
-
49
- def previous(options={})
50
- field = self.class.by_star_start_field(options)
51
- value = self.send(field.split(".").last)
52
- self.class.by_star_scope(options.merge(scope_args: self)).where("#{field} < ?", value).reorder("#{field} DESC").first
53
- end
54
-
55
- def next(options={})
56
- field = self.class.by_star_start_field(options)
57
- value = self.send(field.split(".").last)
58
- self.class.by_star_scope(options.merge(scope_args: self)).where("#{field} > ?", value).reorder("#{field} ASC").first
59
- end
60
- end
61
- end
1
+ module ByStar
2
+ module ActiveRecord
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ include ::ByStar::Base
7
+
8
+ protected
9
+
10
+ def by_star_default_field
11
+ "#{self.table_name}.created_at"
12
+ end
13
+
14
+ def by_star_point_query(scope, field, start_time, end_time)
15
+ scope.where("#{field} >= ? AND #{field} <= ?", start_time, end_time)
16
+ end
17
+
18
+ def by_star_span_strict_query(scope, start_field, end_field, start_time, end_time)
19
+ scope.where("#{start_field} >= ? AND #{start_field} <= ? AND #{end_field} >= ? AND #{end_field} <= ?", start_time, end_time, start_time, end_time)
20
+ end
21
+
22
+ def by_star_span_loose_query(scope, start_field, end_field, start_time, end_time, options)
23
+ index_scope = by_star_eval_index_scope(start_time, end_time, options)
24
+ scope = scope.where("#{end_field} > ? AND #{start_field} < ?", start_time, end_time)
25
+ scope = scope.where("#{start_field} >= ?", index_scope) if index_scope
26
+ scope
27
+ end
28
+
29
+ def by_star_point_overlap_query(scope, field, time)
30
+ scope.where("#{field} = ?", time)
31
+ end
32
+
33
+ def by_star_span_overlap_query(scope, start_field, end_field, time, options)
34
+ index_scope = by_star_eval_index_scope(time, time, options)
35
+ scope = scope.where("#{end_field} > ? AND #{start_field} <= ?", time, time)
36
+ scope = scope.where("#{start_field} >= ?", index_scope) if index_scope
37
+ scope
38
+ end
39
+
40
+ def by_star_before_query(scope, field, time)
41
+ scope.where("#{field} <= ?", time)
42
+ end
43
+
44
+ def by_star_after_query(scope, field, time)
45
+ scope.where("#{field} >= ?", time)
46
+ end
47
+
48
+ def by_star_order(scope, order)
49
+ scope.order(order)
50
+ end
51
+
52
+ def oldest_query(options={})
53
+ field = by_star_start_field(options)
54
+ reorder("#{field} ASC").first
55
+ end
56
+
57
+ def newest_query(options={})
58
+ field = by_star_start_field(options)
59
+ reorder("#{field} DESC").first
60
+ end
61
+ end
62
+
63
+ def previous(options={})
64
+ field = self.class.by_star_start_field(options)
65
+ value = self.send(field.split(".").last)
66
+ self.class.where("#{field} < ?", value).reorder("#{field} DESC").first
67
+ end
68
+
69
+ def next(options={})
70
+ field = self.class.by_star_start_field(options)
71
+ value = self.send(field.split(".").last)
72
+ self.class.where("#{field} > ?", value).reorder("#{field} ASC").first
73
+ end
74
+ end
75
+ end
@@ -1,76 +1,90 @@
1
- # In keeping with Mongoid standards, this module must be included into your model class, i.e.
2
- #
3
- # include Mongoid::ByStar
4
- #
5
- module Mongoid
6
- module ByStar
7
- extend ActiveSupport::Concern
8
-
9
- module ClassMethods
10
- include ::ByStar::Base
11
-
12
- alias_method :original_by_star_end_field, :by_star_end_field
13
- alias_method :original_by_star_start_field, :by_star_start_field
14
-
15
- def by_star_end_field(options = {})
16
- database_field_name original_by_star_end_field(options)
17
- end
18
-
19
- def by_star_start_field(options = {})
20
- database_field_name original_by_star_start_field(options)
21
- end
22
-
23
- def by_star_default_field
24
- :created_at
25
- end
26
-
27
- protected
28
-
29
- def by_star_point_query(scope, field, start_time, end_time)
30
- range = start_time..end_time
31
- scope.where(field => range)
32
- end
33
-
34
- def by_star_span_strict_query(scope, start_field, end_field, start_time, end_time)
35
- range = start_time..end_time
36
- scope.where(start_field => range).where(end_field => range)
37
- end
38
-
39
- def by_star_span_overlap_query(scope, start_field, end_field, start_time, end_time, options)
40
- scope.gt(end_field => start_time).lt(start_field => end_time)
41
- end
42
-
43
- def by_star_before_query(scope, field, time)
44
- scope.lte(field => time)
45
- end
46
-
47
- def by_star_after_query(scope, field, time)
48
- scope.gte(field => time)
49
- end
50
-
51
- def by_star_order(scope, order)
52
- scope.order_by(order)
53
- end
54
-
55
- def oldest_query(options={})
56
- field = by_star_start_field(options)
57
- by_star_scope(options).all.reorder(field => :asc).first
58
- end
59
-
60
- def newest_query(options={})
61
- field = by_star_start_field(options)
62
- by_star_scope(options).all.reorder(field => :desc).first
63
- end
64
- end
65
-
66
- def previous(options={})
67
- field = self.class.by_star_start_field(options)
68
- self.class.by_star_scope(options.merge(scope_args: self)).lt(field => self.send(field)).reorder(field => :desc).first
69
- end
70
-
71
- def next(options={})
72
- field = self.class.by_star_start_field(options)
73
- self.class.by_star_scope(options.merge(scope_args: self)).gt(field => self.send(field)).reorder(field => :asc).first
74
- end
75
- end
76
- end
1
+ # In keeping with Mongoid standards, this module must be included into your model class, i.e.
2
+ #
3
+ # include Mongoid::ByStar
4
+ #
5
+ module Mongoid
6
+ module ByStar
7
+ extend ActiveSupport::Concern
8
+
9
+ module ClassMethods
10
+ include ::ByStar::Base
11
+
12
+ alias_method :original_by_star_end_field, :by_star_end_field
13
+ alias_method :original_by_star_start_field, :by_star_start_field
14
+
15
+ def by_star_end_field(options = {})
16
+ database_field_name original_by_star_end_field(options)
17
+ end
18
+
19
+ def by_star_start_field(options = {})
20
+ database_field_name original_by_star_start_field(options)
21
+ end
22
+
23
+ def by_star_default_field
24
+ :created_at
25
+ end
26
+
27
+ protected
28
+
29
+ def by_star_point_query(scope, field, start_time, end_time)
30
+ range = start_time..end_time
31
+ scope.where(field => range)
32
+ end
33
+
34
+ def by_star_span_strict_query(scope, start_field, end_field, start_time, end_time)
35
+ range = start_time..end_time
36
+ scope.where(start_field => range).where(end_field => range)
37
+ end
38
+
39
+ def by_star_span_loose_query(scope, start_field, end_field, start_time, end_time, options)
40
+ index_scope = by_star_eval_index_scope(start_time, end_time, options)
41
+ scope = scope.gt(end_field => start_time).lt(start_field => end_time)
42
+ scope = scope.gte(start_field => index_scope) if index_scope
43
+ scope
44
+ end
45
+
46
+ def by_star_point_overlap_query(scope, field, time)
47
+ scope.where(field => time)
48
+ end
49
+
50
+ def by_star_span_overlap_query(scope, start_field, end_field, time, options)
51
+ index_scope = by_star_eval_index_scope(time, time, options)
52
+ scope = scope.gt(end_field => time).lte(start_field => time)
53
+ scope = scope.gte(start_field => index_scope) if index_scope
54
+ scope
55
+ end
56
+
57
+ def by_star_before_query(scope, field, time)
58
+ scope.lte(field => time)
59
+ end
60
+
61
+ def by_star_after_query(scope, field, time)
62
+ scope.gte(field => time)
63
+ end
64
+
65
+ def by_star_order(scope, order)
66
+ scope.order_by(order)
67
+ end
68
+
69
+ def oldest_query(options={})
70
+ field = by_star_start_field(options)
71
+ all.reorder(field => :asc).first
72
+ end
73
+
74
+ def newest_query(options={})
75
+ field = by_star_start_field(options)
76
+ all.reorder(field => :desc).first
77
+ end
78
+ end
79
+
80
+ def previous(options={})
81
+ field = self.class.by_star_start_field(options)
82
+ self.class.lt(field => self.send(field)).reorder(field => :desc).first
83
+ end
84
+
85
+ def next(options={})
86
+ field = self.class.by_star_start_field(options)
87
+ self.class.gt(field => self.send(field)).reorder(field => :asc).first
88
+ end
89
+ end
90
+ end
@@ -1,23 +1,23 @@
1
- # Backport of `reorder` method from Origin 2.1.0+
2
- if defined?(Origin::Optional) && !Origin::Optional.method_defined?(:reorder)
3
- module Origin
4
- module Optional
5
-
6
- # Instead of merging the order criteria, use this method to completely
7
- # replace the existing ordering with the provided.
8
- #
9
- # @example Replace the ordering.
10
- # optional.reorder(name: :asc)
11
- #
12
- # @param [ Array, Hash, String ] spec The sorting specification.
13
- #
14
- # @return [ Optional ] The cloned optional.
15
- #
16
- # @since 2.1.0
17
- def reorder(*spec)
18
- options.delete(:sort)
19
- order_by(*spec)
20
- end
21
- end
22
- end
23
- end
1
+ # Backport of `reorder` method from Origin 2.1.0+
2
+ if defined?(Origin::Optional) && !Origin::Optional.method_defined?(:reorder)
3
+ module Origin
4
+ module Optional
5
+
6
+ # Instead of merging the order criteria, use this method to completely
7
+ # replace the existing ordering with the provided.
8
+ #
9
+ # @example Replace the ordering.
10
+ # optional.reorder(name: :asc)
11
+ #
12
+ # @param [ Array, Hash, String ] spec The sorting specification.
13
+ #
14
+ # @return [ Optional ] The cloned optional.
15
+ #
16
+ # @since 2.1.0
17
+ def reorder(*spec)
18
+ options.delete(:sort)
19
+ order_by(*spec)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
- module ByStar
2
- VERSION = '3.0.0'
3
- end
1
+ module ByStar
2
+ VERSION = '4.0.1'
3
+ end
data/lib/by_star.rb CHANGED
@@ -1,17 +1,18 @@
1
- require 'by_star/kernel/time'
2
- require 'by_star/kernel/date'
3
- require 'by_star/normalization'
4
- require 'by_star/between'
5
- require 'by_star/directional'
6
- require 'by_star/base'
7
-
8
- if defined?(ActiveRecord)
9
- require 'by_star/orm/active_record/by_star'
10
- ActiveRecord::Base.send :include, ByStar::ActiveRecord
11
- ActiveRecord::Relation.send :extend, ByStar::ActiveRecord::ClassMethods
12
- end
13
-
14
- if defined?(Mongoid)
15
- require 'by_star/orm/mongoid/reorder'
16
- require 'by_star/orm/mongoid/by_star'
17
- end
1
+ require 'by_star/kernel/in_time_zone'
2
+ require 'by_star/kernel/time'
3
+ require 'by_star/kernel/date'
4
+ require 'by_star/normalization'
5
+ require 'by_star/between'
6
+ require 'by_star/directional'
7
+ require 'by_star/base'
8
+
9
+ if defined?(ActiveRecord)
10
+ require 'by_star/orm/active_record/by_star'
11
+ ActiveRecord::Base.send :include, ByStar::ActiveRecord
12
+ ActiveRecord::Relation.send :extend, ByStar::ActiveRecord::ClassMethods
13
+ end
14
+
15
+ if defined?(Mongoid)
16
+ require 'by_star/orm/mongoid/reorder'
17
+ require 'by_star/orm/mongoid/by_star'
18
+ end
data/spec/database.yml CHANGED
@@ -1,15 +1,15 @@
1
- sqlite:
2
- adapter: sqlite3
3
- database: by_star.sqlite3
4
-
5
- postgres:
6
- adapter: postgresql
7
- database: by_star_test
8
- username: postgres
9
- min_messages: warning
10
-
11
- mysql:
12
- adapter: mysql2
13
- database: by_star_test
14
- username: root
15
- encoding: utf8
1
+ sqlite:
2
+ adapter: sqlite3
3
+ database: by_star.sqlite3
4
+
5
+ postgres:
6
+ adapter: postgresql
7
+ database: by_star_test
8
+ username: <%= ENV.fetch("USER") || "postgres" %>
9
+ min_messages: warning
10
+
11
+ mysql:
12
+ adapter: mysql2
13
+ database: by_star_test
14
+ username: root
15
+ encoding: utf8
@@ -1,12 +1,12 @@
1
- class Post < ActiveRecord::Base
2
- end
3
-
4
- class Appointment < ActiveRecord::Base
5
- by_star_field scope: ->{ where(day_of_month: 1) }
6
- end
7
-
8
- class Event < ActiveRecord::Base
9
- by_star_field :start_time, :end_time, offset: 3.hours
10
-
11
- default_scope ->{ order(day_of_month: :asc) }
12
- end
1
+ class Post < ActiveRecord::Base
2
+ end
3
+
4
+ class Appointment < ActiveRecord::Base
5
+ by_star_field index_scope: ->(start){ start - 5.days }
6
+ end
7
+
8
+ class Event < ActiveRecord::Base
9
+ by_star_field :start_time, :end_time, offset: 3.hours
10
+
11
+ default_scope ->{ order('day_of_month ASC') }
12
+ end
@@ -1,19 +1,19 @@
1
- ActiveRecord::Schema.define do
2
- self.verbose = false
3
-
4
- create_table :posts, force: true do |t|
5
- t.timestamps
6
- t.integer :day_of_month
7
- end
8
-
9
- create_table :events, force: true do |t|
10
- t.timestamps
11
- t.datetime :start_time, :end_time
12
- t.integer :day_of_month
13
- end
14
-
15
- create_table :appointments, force: true do |t|
16
- t.timestamps
17
- t.integer :day_of_month
18
- end
19
- end
1
+ ActiveRecord::Schema.define do
2
+ self.verbose = false
3
+
4
+ create_table :posts, force: true do |t|
5
+ t.timestamps
6
+ t.integer :day_of_month
7
+ end
8
+
9
+ create_table :events, force: true do |t|
10
+ t.timestamps
11
+ t.datetime :start_time, :end_time
12
+ t.integer :day_of_month
13
+ end
14
+
15
+ create_table :appointments, force: true do |t|
16
+ t.timestamps
17
+ t.integer :day_of_month
18
+ end
19
+ end
@@ -1,31 +1,31 @@
1
- class Post
2
- include Mongoid::Document
3
- include Mongoid::Timestamps
4
- include Mongoid::ByStar
5
-
6
- field :day_of_month, type: Integer
7
- end
8
-
9
- class Appointment
10
- include Mongoid::Document
11
- include Mongoid::Timestamps
12
- include Mongoid::ByStar
13
-
14
- field :day_of_month, type: Integer
15
-
16
- by_star_field scope: ->{ where(day_of_month: 1) }
17
- end
18
-
19
- class Event
20
- include Mongoid::Document
21
- include Mongoid::Timestamps
22
- include Mongoid::ByStar
23
-
24
- field :st, as: :start_time, type: Time
25
- field :end_time, type: Time
26
- field :day_of_month, type: Integer
27
-
28
- by_star_field :start_time, :end_time, offset: 3.hours
29
-
30
- default_scope ->{ order_by(day_of_month: :asc) }
31
- end
1
+ class Post
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+ include Mongoid::ByStar
5
+
6
+ field :day_of_month, type: Integer
7
+ end
8
+
9
+ class Appointment
10
+ include Mongoid::Document
11
+ include Mongoid::Timestamps
12
+ include Mongoid::ByStar
13
+
14
+ field :day_of_month, type: Integer
15
+
16
+ by_star_field index_scope: ->(start){ start - 5.days }
17
+ end
18
+
19
+ class Event
20
+ include Mongoid::Document
21
+ include Mongoid::Timestamps
22
+ include Mongoid::ByStar
23
+
24
+ field :st, as: :start_time, type: Time
25
+ field :end_time, type: Time
26
+ field :day_of_month, type: Integer
27
+
28
+ by_star_field :start_time, :end_time, offset: 3.hours
29
+
30
+ default_scope ->{ order_by(day_of_month: :asc) }
31
+ end
@@ -1,26 +1,36 @@
1
- %w(2013-11-01
2
- 2013-11-30
3
- 2013-12-01
4
- 2013-12-05
5
- 2013-12-08
6
- 2013-12-16
7
- 2013-12-22
8
- 2013-12-25
9
- 2013-12-28
10
- 2013-12-31
11
- 2014-01-01
12
- 2014-01-01
13
- 2014-01-05
14
- 2014-01-10
15
- 2014-01-12
16
- 2014-01-20
17
- 2014-02-01
18
- 2014-02-15
19
- 2014-03-01
20
- 2014-03-15
21
- 2014-04-01
22
- 2014-04-15).map{|d| Time.zone.parse(d) + 17.hours }.each_with_index do |d, index|
23
- Post.create!(created_at: d, updated_at: d + index.days, day_of_month: d.day)
24
- Appointment.create!(created_at: d, day_of_month: d.day)
25
- Event.create!(created_at: d, start_time: d - 5.days, end_time: d + 5.days, day_of_month: d.day)
26
- end
1
+ %w(2013-11-01
2
+ 2013-11-30
3
+ 2013-12-01
4
+ 2013-12-05
5
+ 2013-12-08
6
+ 2013-12-16
7
+ 2013-12-22
8
+ 2013-12-25
9
+ 2013-12-28
10
+ 2013-12-31
11
+ 2014-01-01
12
+ 2014-01-01
13
+ 2014-01-05
14
+ 2014-01-10
15
+ 2014-01-12
16
+ 2014-01-20
17
+ 2014-02-01
18
+ 2014-02-15
19
+ 2014-03-01
20
+ 2014-03-15
21
+ 2014-04-01
22
+ 2014-04-15).map{|d| Time.zone.parse(d) + 17.hours }.each_with_index do |d, index|
23
+ Post.create!(created_at: d, updated_at: d + index.days, day_of_month: d.day)
24
+ Appointment.create!(created_at: d, day_of_month: d.day)
25
+ Event.create!(created_at: d, start_time: d - 5.days, end_time: d + 5.days, day_of_month: d.day)
26
+ end
27
+
28
+ # Sydney timezone specific records
29
+ %w(
30
+ 2020-04-05
31
+ 2020-10-04
32
+ ).map{|d| Date.parse(d) }.each do |d|
33
+ [1, 4, 5, 10].each do |h|
34
+ Event.create!(start_time: d + h.hour, end_time: d + h.hour + 30.minutes, created_at: Date.parse('2011-01-01').in_time_zone)
35
+ end
36
+ end
@@ -0,0 +1,5 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec path: '../../'
4
+
5
+ gem 'activerecord', github: 'rails', branch: "main"
@@ -0,0 +1,7 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec path: '../../'
4
+
5
+ gem 'activerecord', '~> 3.2.0'
6
+ gem 'pg', '~> 0.11'
7
+ gem 'mongoid'
@@ -1,7 +1,7 @@
1
- source 'http://rubygems.org'
2
-
3
- gemspec path: '../../'
4
-
5
- gem 'activerecord', '~> 4.0.0'
6
- gem 'pg', '~> 0.11'
7
- gem 'mongoid', '~> 4.0.0'
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec path: '../../'
4
+
5
+ gem 'activerecord', '~> 4.0.0'
6
+ gem 'pg', '~> 0.11'
7
+ gem 'mongoid'
@@ -1,7 +1,7 @@
1
- source 'http://rubygems.org'
2
-
3
- gemspec path: '../../'
4
-
5
- gem 'activerecord', '~> 4.1.0'
6
- gem 'pg', '~> 0.11'
7
- gem 'mongoid', '~> 4.0.0'
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec path: '../../'
4
+
5
+ gem 'activerecord', '~> 4.1.0'
6
+ gem 'pg', '~> 0.11'
7
+ gem 'mongoid'