by_star 2.2.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +5 -13
  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 -35
  6. data/CHANGELOG.md +59 -29
  7. data/Gemfile +18 -25
  8. data/MIT-LICENSE +20 -20
  9. data/README.md +616 -523
  10. data/Rakefile +18 -18
  11. data/UPGRADING +4 -12
  12. data/by_star.gemspec +34 -32
  13. data/cleaner.rb +24 -24
  14. data/lib/by_star/base.rb +69 -68
  15. data/lib/by_star/between.rb +185 -120
  16. data/lib/by_star/directional.rb +35 -21
  17. data/lib/by_star/kernel/date.rb +41 -0
  18. data/lib/by_star/kernel/in_time_zone.rb +20 -0
  19. data/lib/by_star/{kernel.rb → kernel/time.rb} +41 -41
  20. data/lib/by_star/normalization.rb +156 -118
  21. data/lib/by_star/orm/active_record/by_star.rb +75 -59
  22. data/lib/by_star/orm/mongoid/by_star.rb +90 -63
  23. data/lib/by_star/orm/mongoid/reorder.rb +23 -0
  24. data/lib/by_star/version.rb +3 -3
  25. data/lib/by_star.rb +18 -15
  26. data/spec/database.yml +15 -15
  27. data/spec/fixtures/active_record/models.rb +12 -10
  28. data/spec/fixtures/active_record/schema.rb +19 -19
  29. data/spec/fixtures/mongoid/models.rb +31 -29
  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 -0
  34. data/spec/gemfiles/Gemfile.rails41 +7 -0
  35. data/spec/gemfiles/Gemfile.rails42 +7 -0
  36. data/spec/gemfiles/Gemfile.rails50 +7 -0
  37. data/spec/gemfiles/Gemfile.rails51 +7 -0
  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 -53
  42. data/spec/integration/mongoid/mongoid_spec.rb +39 -46
  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 -0
  46. data/spec/integration/shared/by_calendar_month.rb +55 -55
  47. data/spec/integration/shared/by_cweek.rb +54 -0
  48. data/spec/integration/shared/by_day.rb +120 -108
  49. data/spec/integration/shared/by_direction.rb +126 -114
  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 -31
  58. data/spec/integration/shared/order_parameter.rb +36 -0
  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 -0
  62. data/spec/unit/kernel_time_spec.rb +57 -57
  63. data/spec/unit/normalization_spec.rb +384 -255
  64. data/tmp/.gitignore +1 -1
  65. metadata +82 -68
  66. data/spec/integration/shared/scope_parameter.rb +0 -42
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MTIzYTk4N2IwY2ExNjIwNGNhNGRmODNiNjA3NGQ5YmQyYWI1ODkyZQ==
5
- data.tar.gz: !binary |-
6
- Zjg5MDgwZDMzMTcyOThlZGE4N2M4OTg5MmMzNDMxNzE0MGUyYjhlMg==
2
+ SHA256:
3
+ metadata.gz: ae1bb4b3e4e148196c9a1164b3b0b70022fd84843eb4d5adc0cb9dfd41b0ff5a
4
+ data.tar.gz: ec16b5bb712e19cae620110b979774fe472c430d5485565bd62d8bb30595858a
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MmU1OTgwYWY3YTBmMjQwMzgyYmI0YWNkMTkxM2I5NGMxZTQzYTI2MmEyYTIw
10
- OTZjMmJiZmNkZjk4YTUyMmNkOTcxN2IyYjZjZjc4ZGFkMjE5YmNmNjUwNzhj
11
- MzEyYTdlZTcyN2QwMjE1YzFjODIyYTA4ZTFkOTQ2ODVjMjJkZTI=
12
- data.tar.gz: !binary |-
13
- YzVhM2U3YzRlZTE5ZWY4ZTdjZDc2MDc3MDI4YTVlMWU4OWY4MjNiM2Q3Y2Fk
14
- N2JmNTdmN2M2YmNjYjY1MjJkZGUxMGVmNTdlNzA0OTBiNjJlZWRjN2RhOTcy
15
- YWVhMzIwZmUxMjdjNWEwNmI2NjdiYWNiNGE4NjZhMjdjMmE1NDM=
6
+ metadata.gz: 4749e66ea10dddf1c32c87d0e598b6f852708dcc195dec7f96f3cf83580ff6d50ffcc0f2b286d1cd5b0332d7579634dc23c48aac0b4a97d7e8935d0c89300dc3
7
+ data.tar.gz: 2efd2cab53a2844e1a1ad28fc01557ca3c5e84ddb1e5b0e719f00130c41348c137c121b793cf73ca6d5c7cc88f5d714c075de00785e34afffc6175199f25aafe
@@ -0,0 +1,92 @@
1
+ name: MySQL tests
2
+
3
+ on:
4
+ # Trigger the workflow on push or pull request,
5
+ # but only for the master branch
6
+ push:
7
+ branches:
8
+ - master
9
+ pull_request:
10
+ branches:
11
+ - master
12
+
13
+ jobs:
14
+ mysql:
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ ruby_version: [3.0, 2.7, 2.6, 2.5, jruby]
19
+ gemfile:
20
+ [
21
+ spec/gemfiles/Gemfile.rails50,
22
+ spec/gemfiles/Gemfile.rails51,
23
+ spec/gemfiles/Gemfile.rails52,
24
+ spec/gemfiles/Gemfile.rails60,
25
+ spec/gemfiles/Gemfile.rails61,
26
+ spec/gemfiles/Gemfile.rails,
27
+ ]
28
+ exclude:
29
+ # Ruby 3.x is not supported by Rails 5.2.x
30
+ - ruby_version: 3.0
31
+ gemfile: spec/gemfiles/Gemfile.rails52
32
+ # Ruby 3.x is not supported by Rails 5.1.x
33
+ - ruby_version: 3.0
34
+ gemfile: spec/gemfiles/Gemfile.rails51
35
+ # Ruby 3.x is not supported by Rails 5.0.x
36
+ - ruby_version: 3.0
37
+ gemfile: spec/gemfiles/Gemfile.rails50
38
+
39
+ - ruby_version: 2.6
40
+ gemfile: spec/gemfiles/Gemfile.rails32
41
+
42
+ # Ruby 2.6.x is not supported by Rails main
43
+ - ruby_version: 2.6
44
+ gemfile: spec/gemfiles/Gemfile.rails
45
+
46
+ # Ruby 2.5.x is not supported by Rails main
47
+ - ruby_version: 2.5
48
+ gemfile: spec/gemfiles/Gemfile.rails
49
+
50
+ # Ruby 2.4.x is not supported by Rails main
51
+ - ruby_version: 2.4
52
+ gemfile: spec/gemfiles/Gemfile.rails
53
+ # Ruby 2.4.x is not supported by Rails 6.1.x
54
+ - ruby_version: 2.4
55
+ gemfile: spec/gemfiles/Gemfile.rails61
56
+ # Ruby 2.4.x is not supported by Rails 6.0.x
57
+ - ruby_version: 2.4
58
+ gemfile: spec/gemfiles/Gemfile.rails60
59
+ # Ruby 2.3.x is not supported by Rails 6.1.x
60
+ - ruby_version: 2.3
61
+ gemfile: spec/gemfiles/Gemfile.rails61
62
+ # Ruby 2.3.x is not supported by Rails main
63
+ - ruby_version: 2.3
64
+ gemfile: spec/gemfiles/Gemfile.rails
65
+ # Ruby 2.3.x is not supported by Rails 6.0.x
66
+ - ruby_version: 2.3
67
+ gemfile: spec/gemfiles/Gemfile.rails60
68
+ # JRuby is not supported by Rails main
69
+ - ruby_version: jruby
70
+ gemfile: spec/gemfiles/Gemfile.rails
71
+
72
+ runs-on: ubuntu-latest
73
+
74
+ steps:
75
+ - uses: actions/checkout@v2
76
+
77
+ - name: Set up Ruby
78
+ uses: ruby/setup-ruby@master
79
+ with:
80
+ ruby-version: ${{ matrix.ruby_version }}
81
+
82
+ - name: Start MySQL
83
+ - run: sudo /etc/init.d/mysql start
84
+
85
+ - name: Build and test with Rake
86
+ env:
87
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
88
+ DB: "postgres"
89
+ run: |
90
+ gem install bundler
91
+ bundle install --jobs 4 --retry 3
92
+ bundle exec rake
@@ -0,0 +1,99 @@
1
+ name: PostgreSQL tests
2
+
3
+ on:
4
+ # Trigger the workflow on push or pull request,
5
+ # but only for the master branch
6
+ push:
7
+ branches:
8
+ - master
9
+ pull_request:
10
+ branches:
11
+ - master
12
+
13
+ jobs:
14
+ postgresql:
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ ruby_version: [3.0, 2.7, 2.6, 2.5, jruby]
19
+ gemfile:
20
+ [
21
+ spec/gemfiles/Gemfile.rails50,
22
+ spec/gemfiles/Gemfile.rails51,
23
+ spec/gemfiles/Gemfile.rails52,
24
+ spec/gemfiles/Gemfile.rails60,
25
+ spec/gemfiles/Gemfile.rails61,
26
+ spec/gemfiles/Gemfile.rails,
27
+ ]
28
+ exclude:
29
+ # Ruby 3.x is not supported by Rails 5.2.x
30
+ - ruby_version: 3.0
31
+ gemfile: spec/gemfiles/Gemfile.rails52
32
+ # Ruby 3.x is not supported by Rails 5.1.x
33
+ - ruby_version: 3.0
34
+ gemfile: spec/gemfiles/Gemfile.rails51
35
+ # Ruby 3.x is not supported by Rails 5.0.x
36
+ - ruby_version: 3.0
37
+ gemfile: spec/gemfiles/Gemfile.rails50
38
+
39
+ - ruby_version: 2.6
40
+ gemfile: spec/gemfiles/Gemfile.rails32
41
+
42
+ # Ruby 2.6.x is not supported by Rails main
43
+ - ruby_version: 2.6
44
+ gemfile: spec/gemfiles/Gemfile.rails
45
+
46
+ # Ruby 2.5.x is not supported by Rails main
47
+ - ruby_version: 2.5
48
+ gemfile: spec/gemfiles/Gemfile.rails
49
+
50
+ # Ruby 2.4.x is not supported by Rails main
51
+ - ruby_version: 2.4
52
+ gemfile: spec/gemfiles/Gemfile.rails
53
+ # Ruby 2.4.x is not supported by Rails 6.1.x
54
+ - ruby_version: 2.4
55
+ gemfile: spec/gemfiles/Gemfile.rails61
56
+ # Ruby 2.4.x is not supported by Rails 6.0.x
57
+ - ruby_version: 2.4
58
+ gemfile: spec/gemfiles/Gemfile.rails60
59
+ # Ruby 2.3.x is not supported by Rails 6.1.x
60
+ - ruby_version: 2.3
61
+ gemfile: spec/gemfiles/Gemfile.rails61
62
+ # Ruby 2.3.x is not supported by Rails main
63
+ - ruby_version: 2.3
64
+ gemfile: spec/gemfiles/Gemfile.rails
65
+ # Ruby 2.3.x is not supported by Rails 6.0.x
66
+ - ruby_version: 2.3
67
+ gemfile: spec/gemfiles/Gemfile.rails60
68
+ # JRuby is not supported by Rails main
69
+ - ruby_version: jruby
70
+ gemfile: spec/gemfiles/Gemfile.rails
71
+
72
+ runs-on: ubuntu-latest
73
+
74
+ steps:
75
+ - uses: actions/checkout@v2
76
+
77
+ - name: Set up Ruby
78
+ uses: ruby/setup-ruby@master
79
+ with:
80
+ ruby-version: ${{ matrix.ruby_version }}
81
+
82
+ - uses: harmon758/postgresql-action@v1
83
+ with:
84
+ postgresql version: '11'
85
+
86
+ - name: Start PostgreSQL
87
+ run: |
88
+ sudo service postgresql start
89
+ sudo -u postgres createuser --superuser "$USER"
90
+ createdb by_star_test
91
+
92
+ - name: Build and test with Rake
93
+ env:
94
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
95
+ DB: "postgres"
96
+ run: |
97
+ gem install bundler
98
+ bundle install --jobs 4 --retry 3
99
+ bundle exec rake
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
- tmp
2
- spec/fixtures/database.yml
3
- pkg
4
- by_star.sqlite3
5
- Gemfile.lock
1
+ .idea
2
+ tmp
3
+ spec/fixtures/database.yml
4
+ pkg
5
+ by_star.sqlite3
6
+ Gemfile.lock
data/.travis.yml CHANGED
@@ -1,35 +1,92 @@
1
- before_script:
2
- - "mysql -e 'create database by_star_test;'"
3
- - "psql -c 'create database by_star_test;' -U postgres"
4
-
5
- env:
6
- - DB=sqlite
7
- - DB=mysql
8
- - DB=postgres
9
- - DB=mongodb
10
- - ACTIVE_RECORD_VERSION=4.0.0 MONGOID_VERSION=master DB=sqlite
11
- - ACTIVE_RECORD_VERSION=4.0.0 MONGOID_VERSION=master DB=mysql
12
- - ACTIVE_RECORD_VERSION=4.0.0 MONGOID_VERSION=master DB=postgres
13
- - ACTIVE_RECORD_VERSION=4.0.0 MONGOID_VERSION=master DB=mongodb
14
-
15
- notifications:
16
- email:
17
- - radarlistener@gmail.com
18
-
19
- branches:
20
- only:
21
- - master
22
-
23
- rvm:
24
- - 1.9.3
25
- - 2.0.0
26
- - 2.1.0
27
- - rbx
28
- - jruby
29
-
30
- matrix:
31
- allow_failures:
32
- - rvm: rbx
33
- - rvm: jruby
34
-
35
- services: mongodb
1
+ services: mongodb
2
+
3
+ before_script:
4
+ - "mysql -e 'create database by_star_test;'"
5
+ - "psql -c 'create database by_star_test;' -U postgres"
6
+
7
+ env:
8
+ - DB=sqlite
9
+ - DB=mysql
10
+ - DB=postgres
11
+ - DB=mongodb
12
+
13
+ gemfile:
14
+ - spec/gemfiles/Gemfile.rails32
15
+ - spec/gemfiles/Gemfile.rails40
16
+ - spec/gemfiles/Gemfile.rails41
17
+ - spec/gemfiles/Gemfile.rails42
18
+ - spec/gemfiles/Gemfile.rails50
19
+ - spec/gemfiles/Gemfile.rails51
20
+ - spec/gemfiles/Gemfile.rails52
21
+ - spec/gemfiles/Gemfile.master
22
+
23
+ rvm:
24
+ - 2.0.0
25
+ - 2.1.10
26
+ - 2.2.10
27
+ - 2.3.8
28
+ - 2.4.6
29
+ - 2.5.5
30
+ - 2.6.3
31
+
32
+ matrix:
33
+ fast_finish: true
34
+
35
+ exclude:
36
+ - gemfile: 'spec/gemfiles/Gemfile.rails32'
37
+ rvm: 2.2.10
38
+ - gemfile: 'spec/gemfiles/Gemfile.rails32'
39
+ rvm: 2.3.8
40
+ - gemfile: 'spec/gemfiles/Gemfile.rails32'
41
+ rvm: 2.4.6
42
+ - gemfile: 'spec/gemfiles/Gemfile.rails32'
43
+ rvm: 2.5.5
44
+ - gemfile: 'spec/gemfiles/Gemfile.rails32'
45
+ rvm: 2.6.3
46
+ - gemfile: 'spec/gemfiles/Gemfile.rails40'
47
+ rvm: 2.4.6
48
+ - gemfile: 'spec/gemfiles/Gemfile.rails40'
49
+ rvm: 2.5.5
50
+ - gemfile: 'spec/gemfiles/Gemfile.rails40'
51
+ rvm: 2.6.3
52
+ - gemfile: 'spec/gemfiles/Gemfile.rails41'
53
+ rvm: 2.4.6
54
+ - gemfile: 'spec/gemfiles/Gemfile.rails41'
55
+ rvm: 2.5.5
56
+ - gemfile: 'spec/gemfiles/Gemfile.rails41'
57
+ rvm: 2.6.3
58
+ - gemfile: 'spec/gemfiles/Gemfile.rails50'
59
+ rvm: 2.0.0
60
+ - gemfile: 'spec/gemfiles/Gemfile.rails50'
61
+ rvm: 2.1.10
62
+ - gemfile: 'spec/gemfiles/Gemfile.rails50'
63
+ rvm: 2.6.3
64
+ - gemfile: 'spec/gemfiles/Gemfile.rails51'
65
+ rvm: 2.0.0
66
+ - gemfile: 'spec/gemfiles/Gemfile.rails51'
67
+ rvm: 2.1.10
68
+ - gemfile: 'spec/gemfiles/Gemfile.rails51'
69
+ rvm: 2.6.3
70
+ - gemfile: 'spec/gemfiles/Gemfile.rails52'
71
+ rvm: 2.0.0
72
+ - gemfile: 'spec/gemfiles/Gemfile.rails52'
73
+ rvm: 2.1.10
74
+
75
+ allow_failures:
76
+ - gemfile: 'spec/gemfiles/Gemfile.master'
77
+ - gemfile: 'spec/gemfiles/Gemfile.rails32'
78
+ env: 'DB=sqlite'
79
+ - gemfile: 'spec/gemfiles/Gemfile.rails32'
80
+ env: 'DB=mysql'
81
+ - gemfile: 'spec/gemfiles/Gemfile.rails40'
82
+ env: 'DB=sqlite'
83
+ - gemfile: 'spec/gemfiles/Gemfile.rails40'
84
+ env: 'DB=mysql'
85
+ - gemfile: 'spec/gemfiles/Gemfile.rails41'
86
+ env: 'DB=sqlite'
87
+ - gemfile: 'spec/gemfiles/Gemfile.rails41'
88
+ env: 'DB=mysql'
89
+ - gemfile: 'spec/gemfiles/Gemfile.rails42'
90
+ env: 'DB=sqlite'
91
+ - gemfile: 'spec/gemfiles/Gemfile.rails50'
92
+ env: 'DB=sqlite'
data/CHANGELOG.md CHANGED
@@ -1,29 +1,59 @@
1
- # CHANGELOG
2
-
3
- ## v2.2.0 - 2014-04-01
4
-
5
- * Add `:scope` parameter support on all finders - @pnomolos / @johnnyshields
6
- * Feature: Add `past_*` and `next_*` finders - @davegudge
7
- * Bug Fix: `:field`, `:start_field`, and `:end_field` options were being ignored on finder - @johnnyshields / @gamov
8
- * Bug Fix: `by_star_field` should accept options without start/end_time args - @johnnyshields
9
- * Improve readme documentation - @johnnyshields
10
-
11
- ## v2.2.0.rc1 - 2014-01-14
12
-
13
- * Begin tracking CHANGELOG
14
- * Drop official support for Ruby <= 1.9.2
15
- * Add Ruby 2.1.0, Rubinius, and JRuby to Travis
16
- * Decouple gem from ActiveRecord, and put ActiveRecord and Mongoid specific methods in ORM modules.
17
- * Consolidate all normalization/parsing functions into new Normalization module
18
- * Remove meta-programming methods, e.g. `send("by_week_#{time_klass}")`
19
- * Support matching timespan-type objects with distinct start and end times (previously only point-in-time matching was supported)
20
- * Make Chronic gem optional; use it only if user has included it externally
21
- * `by_week` always returns a calendar week (i.e. beginning Monday or as specified by Rails setting), regardless of whether Date or Fixnum is given as a parameter.
22
- * `by_week` and `by_calendar_month` now supports optional `:start_day` option (:monday, :tuesday, etc)
23
- * Separate `by_calendar_month` into it's own class
24
- * Rename `between` method to `between_times` internally, as Mongoid already defines `between`. ActiveRecord has an alias of `between` so interface stays consistent.
25
- * Add `:offset` option to all query methods, in order to offset the time the day begins/ends (for example supposing business cycle begins at 8:00 each day until 7:59:59 the next day)
26
- * `by_weekend` can now take a fixnum (parsing logic is same as by_week)
27
- * Two-digit year now considers 70 to be 1970, and 69 to be 2069 (was previously 40 -> 1940)
28
- * Add Time kernel extensions for fortnight and calendar_month
29
- * Add Johnny Shields as a gem co-author
1
+ # CHANGELOG
2
+
3
+ ## v4.0.0 - Unreleased
4
+
5
+ * BREAKING CHANGE - `#between` method has been removed (was deprecated in 2.2.0)
6
+ * BREAKING CHANGE - `:order` arg for `#between_times` has been removed.
7
+ * BREAKING CHANGE - Drop support for option `:year` used as a standalone. Use `by_year` instead.
8
+ * BREAKING CHANGE - `#between_times` now queries on records until end of day on `end_time`, if it is a date.
9
+ * `#between_times` now accepts one-sided arguments, e.g. `Time, nil` or `nil, Time`.
10
+ * `#between_times` now accepts `Range` or `Array` as an argument, while continuing to support existing `Time, Time` interface.
11
+ * Add `#at_time` method for point-in-time query.
12
+ * Timespan "strict" query now sets double-sided constraints on both fields to ensure database indexes are used properly.
13
+ * Add optional `:index_scope` option for timespan "non-strict" queries to improve database performance.
14
+ * Fixes `offset` option to set hour, min, and sec of day for queries on dates for better DST support.
15
+ * More consistent application of `Time.zone`.
16
+ * Re-add test coverage for Rails 3.2. This will be removed when we upgrade to Ruby 2.2+ as minimum version.
17
+
18
+ ## v3.0.0
19
+
20
+ * Upgrade Travis for broader coverage of Ruby, ActiveRecord, and Mongoid versions - @johnnyshields
21
+ * Removed support for Ruby < 2.0 and Rails < 4.0. They are over 5 years old, and so it's time to upgrade. - @radar
22
+ * Removed references to deprecated Fixnum constant - @rgioia - #78
23
+ * Mongoid `newest`, `oldest`, `previous`, and `next` now use `reorder` to ignore any default scope, consistent with ActiveRecord - @johnnyshields
24
+ * Mongoid 3.x: Add support for `Criteria#reorder` method from version 4+ - @johnnyshields
25
+ * Upgrade Rspec tests to version 3.1 - @nhocki
26
+
27
+ ## v2.2.1 - 2014-04-21
28
+
29
+ * Allow `previous` and `next` to take the current record in their scope - @pnomolos / @johnnyshields
30
+ * Alias `Date#in_time_zone` to `#to_time_in_current_zone` if not already defined (e.g. for Rails <= 3) - @jcypret / @johnnyshields
31
+ * Add `oldest` and `newest` methods
32
+
33
+ ## v2.2.0 - 2014-04-01
34
+
35
+ * Add `:scope` parameter support on all finders - @pnomolos / @johnnyshields
36
+ * Feature: Add `past_*` and `next_*` finders - @davegudge
37
+ * Bug Fix: `:field`, `:start_field`, and `:end_field` options were being ignored on finder - @johnnyshields / @gamov
38
+ * Bug Fix: `by_star_field` should accept options without start/end_time args - @johnnyshields
39
+ * Improve readme documentation - @johnnyshields
40
+
41
+ ## v2.2.0.rc1 - 2014-01-14
42
+
43
+ * Begin tracking CHANGELOG
44
+ * Drop official support for Ruby <= 1.9.2
45
+ * Add Ruby 2.1.0, Rubinius, and JRuby to Travis
46
+ * Decouple gem from ActiveRecord, and put ActiveRecord and Mongoid specific methods in ORM modules.
47
+ * Consolidate all normalization/parsing functions into new Normalization module
48
+ * Remove meta-programming methods, e.g. `send("by_week_#{time_klass}")`
49
+ * Support matching timespan-type objects with distinct start and end times (previously only point-in-time matching was supported)
50
+ * Make Chronic gem optional; use it only if user has included it externally
51
+ * `by_week` always returns a calendar week (i.e. beginning Monday or as specified by Rails setting), regardless of whether Date or Fixnum is given as a parameter.
52
+ * `by_week` and `by_calendar_month` now supports optional `:start_day` option (:monday, :tuesday, etc)
53
+ * Separate `by_calendar_month` into it's own class
54
+ * Rename `between` method to `between_times` internally, as Mongoid already defines `between`. ActiveRecord has an alias of `between` so interface stays consistent.
55
+ * Add `:offset` option to all query methods, in order to offset the time the day begins/ends (for example supposing business cycle begins at 8:00 each day until 7:59:59 the next day)
56
+ * `by_weekend` can now take a fixnum (parsing logic is same as by_week)
57
+ * Two-digit year now considers 70 to be 1970, and 69 to be 2069 (was previously 40 -> 1940)
58
+ * Add Time kernel extensions for fortnight and calendar_month
59
+ * Add Johnny Shields as a gem co-author
data/Gemfile CHANGED
@@ -1,25 +1,18 @@
1
- source 'http://rubygems.org'
2
-
3
- # Specify your gem's dependencies in by_star.gemspec
4
- gemspec
5
-
6
- active_record_version = ENV['ACTIVE_RECORD_VERSION'] || 'default'
7
-
8
- active_record_opts =
9
- case active_record_version
10
- when 'master' then {github: 'rails/rails'}
11
- when 'default' then '~> 3.0'
12
- else "~> #{active_record_version}"
13
- end
14
-
15
- mongoid_version = ENV['MONGOID_VERSION'] || 'default'
16
-
17
- mongoid_opts =
18
- case mongoid_version
19
- when 'master' then {github: 'mongoid/mongoid'}
20
- when 'default' then '~> 3.0'
21
- else "~> #{mongoid_version}"
22
- end
23
-
24
- gem 'activerecord', active_record_opts
25
- gem 'mongoid', mongoid_opts
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ ar_version = ENV['ACTIVE_RECORD_VERSION']
6
+ ar_version = case ar_version
7
+ when 'master' then {github: 'rails'}
8
+ when String then "~> #{ar_version}"
9
+ end
10
+
11
+ mo_version = ENV['MONGOID_VERSION']
12
+ mo_version = case mo_version
13
+ when 'master' then {github: 'mongoid'}
14
+ when String then "~> #{mo_version}"
15
+ end
16
+
17
+ gem 'activerecord', ar_version if ar_version
18
+ gem 'mongoid', mo_version if mo_version
data/MIT-LICENSE CHANGED
@@ -1,20 +1,20 @@
1
- Copyright (c) 2008 Ryan Bigg
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright (c) 2008 Ryan Bigg
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.