active_record_date_range_scopes 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1909e880a4c222561ba32c51bfc9c7d9ef2b1569d2406753288b3ee1620e0987
4
+ data.tar.gz: 7b7c06039f49a79f3ec2b64ee10a6f1771ac23095406f11398429b48ef4f70e7
5
+ SHA512:
6
+ metadata.gz: 619b3fc50ed3cdb62f060b9b8a562d103ca4f0f5084af741d8391e8f9db67d575c436727aec700b41a3518f8236ab500b8dbfc5b20713e17fe857e3a6871b746
7
+ data.tar.gz: 0d9835c95dc6ff11fea13203d33e9980479282f8c8ed5eac90570f26b3db612876b1b0388b5213d70ca236d8b66dc1b8ba8af4c8a1978d01c406e7b9e39e916e
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ .rspec_status
10
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.6.3
7
+ before_install: gem install bundler -v 1.17.3
@@ -0,0 +1,10 @@
1
+ # Changelog
2
+
3
+ This project follows [semver 2.0.0](http://semver.org/spec/v2.0.0.html) and the
4
+ recommendations of [keepachangelog.com](http://keepachangelog.com/).
5
+
6
+ ## (Unreleased)
7
+
8
+ ## 0.1.2 (2020-01-31)
9
+
10
+ Initial release
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in active_record_date_range_scopes.gemspec
6
+ gemspec
data/License ADDED
@@ -0,0 +1,18 @@
1
+ Copyright (c) 2020 Tyler Rick
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
4
+ associated documentation files (the "Software"), to deal in the Software without restriction,
5
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
6
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
7
+ furnished to do so, subject to the following conditions:
8
+
9
+ The above copyright notice and this permission notice shall be included in all copies or substantial
10
+ portions of the Software.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,152 @@
1
+ # ActiveRecord Date Range Scopes
2
+
3
+ Simply add a line like this within your ActiveRecord model:
4
+ ```ruby
5
+ date_range_scopes :created
6
+ ```
7
+
8
+ … and it will defines 3 date range scopes named after the given scope `name`:
9
+ - `{name}_between`
10
+ - `{name}_after`
11
+ - `{name}_before`
12
+
13
+ ## Usage
14
+
15
+ ### date_range_scopes
16
+
17
+ Simple example:
18
+
19
+ ```ruby
20
+ class Book < ActiveRecord::Base
21
+ # This defines created_between, created_after, created_before scopes
22
+ date_range_scopes :created
23
+
24
+ # This defines updated_between, updated_after, updated_before scopes
25
+ date_range_scopes :updated
26
+ end
27
+
28
+ Book.created_between(3.years.ago, 1.year.ago)
29
+ Book.created_between('2020-01-01', '2020-01-31')
30
+ Book.created_after(1.week.ago)
31
+ Book.created_before(1.day.ago)
32
+ ```
33
+
34
+ By default, uses `{name}_at` as the column name. Column should be a `:datetime` (timestamp) column.
35
+
36
+ But if the defaults aren't what you need, it is fully customizable:
37
+ - You can give the scopes any name prefix you want
38
+ - You can specify a different column name to use for the scopes
39
+ - You can optionally add any joins or other clauses you need to add to the relation.
40
+
41
+ ```ruby
42
+ class Book < ActiveRecord::Base
43
+ # This creates is_between, is_after, is_before scopes
44
+ date_range_scopes :is, ->{ arel_table[:created_at] },
45
+ end
46
+ ```
47
+
48
+ ```ruby
49
+ class Author < ActiveRecord::Base
50
+ date_range_scopes :with_any_books_created,
51
+ ->{ Book.arel_table[:created_at] },
52
+ ->(_) { joins(:books) }
53
+ end
54
+ ```
55
+
56
+ # This would be the same as writing it out long-hand:
57
+ ```ruby
58
+ class Author < ActiveRecord::Base
59
+ scope :with_any_books_created_between, ->(after, before) {
60
+ with_any_books_created_after(after).
61
+ with_any_books_created_before(before)
62
+ }
63
+ scope :with_any_books_created_after, ->(date_or_time) {
64
+ next unless date_or_time
65
+
66
+ joins(:books).
67
+ where(
68
+ Book.arel_table[:created_at].gteq( time_or_beginning_of_day(date_or_time) )
69
+ )
70
+ }
71
+ scope :with_any_books_created_before, ->(date_or_time) {
72
+
73
+ }
74
+ end
75
+ ```
76
+
77
+ ### delegate_date_range_scopes
78
+
79
+ Delegates the date filter scopes to an association (requires the scopes to already be
80
+ defined there in the `to` model using `date_range_scopes`).
81
+
82
+ This uses `Relation.merge` to merge the scope on the associated model, allowing you to reuse
83
+ existing scopes on other models. But since these scopes are local (to the model in which you
84
+ call `delegate_date_range_scopes`), the query returns instances of the local model rather than
85
+ instances of the associated model.
86
+
87
+ Unlike date_range_scopes, where you specify which *column* to operate on, this lets you specify
88
+ which *scope* to delegate to in the target (`to`) model. If `scope` not specified, uses the
89
+ same scope name as in the source model, removing `{target}s_` prefix if there is one.
90
+
91
+ Example:
92
+
93
+ ```ruby
94
+ class Book < ActiveRecord::Base
95
+ date_range_scopes :created
96
+ end
97
+
98
+ class Author < ActiveRecord::Base
99
+ # Delegates to Book.created* scopes by default
100
+ delegate_date_range_scopes :books_created, ->(_) { joins(:books) }, to: Book
101
+ # Explicitly tells it to delegate Author.with_any_books_written_* to Book.created_
102
+ delegate_date_range_scopes :with_any_books_written, ->(_) { joins(:books) }, to: Book, scope: :created
103
+ end
104
+
105
+ Author.with_any_books_written_before('1970-01-01')
106
+ ```
107
+
108
+
109
+
110
+ ## Features
111
+
112
+ - Makes it very easy to define date range scopes
113
+ - Lets you add scopes that are based on associated (join) records
114
+ - If `nil` is passed to any of these scopes, the scope simply has no effect, rather than raising an error. This is useful if you have lots of filters that your users may or may not provide any value for.
115
+ - Handles time zones correctly: calls `in_time_zone` on strings/dates that are passed in
116
+ - If a date is passed in, it is converted to `beginning_of_day`/`end_of_day` depending on whether it is used in an `_after`/`_before` scope, respectively
117
+ - It even lets you mix dates and times in an intuitive way: `Model.created_between(1.week.ago, Date.today)`
118
+
119
+ ## Comparison with other date range gems
120
+
121
+ ### [date_supercharger](https://github.com/simon0191/date_supercharger) ([meat](https://github.com/simon0191/date_supercharger/blob/master/lib/date_supercharger/method_definer.rb))
122
+ - It [_automatically_ adds scopes](https://github.com/simon0191/date_supercharger/blob/master/lib/date_supercharger/matcher.rb#L25) for every `datetime`/`date` column (PR welcome for an optional module that you can include to get this behavior); `active_record_date_range_scopes` requires explicitly adding scopes, provides a macro that makes it easy to add scopes for the columns you care about, give them meaningful/custom names, and even add scopes that are based on associated (join) records
123
+ - =: It defines separate `between` and `between_inclusive` scopes; `active_record_date_range_scopes` provides an `inclusive:` option that can be passed to any scope
124
+
125
+ ### [date_range_scopes](https://github.com/nragaz/date_range_scopes) ([meat](https://github.com/nragaz/date_range_scopes/blob/master/lib/date_range_scopes.rb))
126
+ - +: It [supports](https://github.com/nragaz/date_range_scopes/blob/master/lib/date_range_scopes.rb#L28) `date` (`_on`) fields; `active_record_date_range_scopes` currently only supports `datetime` (`_at`) fields (PR welcome!)
127
+ - +: It provides `_on`, `_in_week`, `_in_month`, `_in_year` scopes (PR welcome!)
128
+ - -: It doesn't provides `_between`/`_after`/`_before` scopes
129
+ - -: It uses strings (`"column >="`) for `where` clause; `active_record_date_range_scopes` uses Arel (`arel_table[:column].gteq()`)
130
+
131
+ ### [https://github.com/kevinkaske/readable_date_ranges](https://github.com/kevinkaske/readable_date_ranges) ([meat](https://github.com/kevinkaske/readable_date_ranges/blob/master/lib/readable_date_ranges.rb))
132
+ - Its main focus appears to be adding readable range scopes like `created_this_week`, which is nice to have as presets but means it is pretty inflexible (can't specify custom ranges like you can in `active_record_date_range_scopes` and the other similar gems)
133
+ - +: It provides `_this_week`, `_this_month`, `_this_year`; `_last_week`, etc. scopes (PR welcome!)
134
+
135
+ ## Installation
136
+
137
+ Add this line to your application's `Gemfile`:
138
+
139
+ ```ruby
140
+ gem 'active_record_date_range_scopes'
141
+ ```
142
+
143
+
144
+ ## Development
145
+
146
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
147
+
148
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
149
+
150
+ ## Contributing
151
+
152
+ Bug reports and pull requests are welcome on GitHub at https://github.com/TylerRick/active_record_date_range_scopes.
@@ -0,0 +1,34 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "active_record/date_range_scopes/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "active_record_date_range_scopes"
7
+ spec.version = ActiveRecord::DateRangeScopes.version
8
+ spec.authors = ["Tyler Rick"]
9
+ spec.email = ["tyler@tylerrick.com"]
10
+
11
+ spec.summary = %q{Easily create ActiveRecord date range scopes}
12
+ spec.description = spec.summary
13
+ spec.homepage = "http://github.com/TylerRick/active_record_date_range_scopes"
14
+
15
+ spec.metadata["homepage_uri"] = spec.homepage
16
+ spec.metadata["source_code_uri"] = spec.homepage
17
+ spec.metadata["changelog_uri"] = "#{spec.metadata["source_code_uri"]}/blob/master/Changelog.md"
18
+
19
+ # Specify which files should be added to the gem when it is released.
20
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ end
24
+ spec.bindir = "exe"
25
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
+ spec.require_paths = ["lib"]
27
+
28
+ spec.add_dependency "activesupport", [">= 4.2"]
29
+ spec.add_dependency "activerecord", [">= 4.2"]
30
+
31
+ spec.add_development_dependency "bundler", "~> 1.17"
32
+ spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency "rspec", "~> 3.0"
34
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "active_record_date_range_scopes"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,162 @@
1
+ require 'active_record'
2
+ require 'active_support'
3
+
4
+ module ActiveRecord
5
+ module DateRangeScopes
6
+ extend ActiveSupport::Concern
7
+
8
+ module ClassMethods
9
+ ##
10
+ # Defines 3 date range scopes named after the given `name`:
11
+ # - {name}_between
12
+ # - {name}_after
13
+ # - {name}_before
14
+ #
15
+ # By default, uses {name}_at as the column name. Column should be a :datetime (timestamp) column.
16
+ #
17
+ # Examples:
18
+ #
19
+ # class Book < ActiveRecord::Base
20
+ # # This defines created_between, created_after, created_before scopes
21
+ # date_range_scopes :created
22
+ #
23
+ # # This defines updated_between, updated_after, updated_before scopes
24
+ # date_range_scopes :updated
25
+ # end
26
+ #
27
+ # class Author < ActiveRecord::Base
28
+ # # You can specify a different column name to use for the scopes, and optionally, any joins
29
+ # # or other clauses you need to add to the relation.
30
+ # date_range_scopes :with_any_books_created, ->{ Book.arel_table[:created_at] }, ->(_) { joins(:books) }
31
+ # end
32
+ #
33
+ # # This would be the same as:
34
+ # class Author < ActiveRecord::Base
35
+ # scope :with_any_books_created_between, ->(after, before) {
36
+ # with_any_books_created_after(after).
37
+ # with_any_books_created_before(before)
38
+ # }
39
+ # scope :with_any_books_created_after, ->(date_or_time) {
40
+ # next unless date_or_time
41
+ #
42
+ # joins(:books).
43
+ # where(
44
+ # Book.arel_table[:created_at].gteq( time_or_beginning_of_day(date_or_time) )
45
+ # )
46
+ # }
47
+ # scope :with_any_books_created_before, ->(date_or_time) {
48
+ # …
49
+ # }
50
+ # end
51
+ #
52
+ def date_range_scopes(
53
+ name,
54
+ arel_attr = -> { arel_table[:"#{name}_at"] },
55
+ relation = :itself
56
+ )
57
+ relation = relation.to_proc
58
+
59
+ scope :"#{name}_between", ->(after, before) {
60
+ public_send(:"#{name}_after", after).
61
+ public_send(:"#{name}_before", before)
62
+ }
63
+ scope :"#{name}_after", ->(date_or_time) {
64
+ next unless date_or_time
65
+
66
+ instance_eval(&relation).
67
+ where(
68
+ arel_attr.().gteq( time_or_beginning_of_day(date_or_time) )
69
+ )
70
+ }
71
+ scope :"#{name}_before", ->(date_or_time) {
72
+ next unless date_or_time
73
+
74
+ instance_eval(&relation).
75
+ where(
76
+ arel_attr.().lteq( time_or_end_of_day(date_or_time) )
77
+ )
78
+ }
79
+ end
80
+
81
+ def time_or_end_of_day(date_or_time)
82
+ if date_or_time.is_a?(Date)
83
+ date_or_time.in_time_zone.end_of_day
84
+ else
85
+ date_or_time.in_time_zone
86
+ end
87
+ end
88
+
89
+ def time_or_beginning_of_day(date_or_time)
90
+ if date_or_time.is_a?(Date)
91
+ date_or_time.in_time_zone.beginning_of_day
92
+ else
93
+ date_or_time.in_time_zone
94
+ end
95
+ end
96
+
97
+ ##
98
+ # Delegates the date filter scopes to an association (requires the scopes to already be
99
+ # defined there in the `to` model using `date_range_scopes`).
100
+ #
101
+ # This uses `Relation.merge` to merge the scope on the associated model, allowing you to reuse
102
+ # existing scopes on other models. But since these scopes are local (to the model in which you
103
+ # call `delegate_date_range_scopes`), the query returns instances of the local model rather than
104
+ # instances of the associated model.
105
+ #
106
+ # Unlike date_range_scopes, where you specify which *column* to operate on, this lets you specify
107
+ # which *scope* to delegate to in the target (`to`) model. If `scope` not specified, uses the
108
+ # same scope name as in the source model, removing `{target}s_` prefix if there is one.
109
+ #
110
+ # Example:
111
+ #
112
+ # class Book < ActiveRecord::Base
113
+ # date_range_scopes :created
114
+ # end
115
+ #
116
+ # class Author < ActiveRecord::Base
117
+ # # Delegates to Book.created* scopes by default
118
+ # delegate_date_range_scopes :books_created, ->(_) { joins(:books) }, to: Book
119
+ # # Explicitly tells it to delegate Author.with_any_books_written_* to Book.created_
120
+ # delegate_date_range_scopes :with_any_books_written, ->(_) { joins(:books) }, to: Book, scope: :created
121
+ # end
122
+ #
123
+ # Author.with_any_books_written_before('1970-01-01')
124
+ #
125
+ def delegate_date_range_scopes(
126
+ local_name,
127
+ relation = :itself,
128
+ to:,
129
+ scope: nil
130
+ )
131
+ relation = relation.to_proc
132
+ target_model = to
133
+ name_on_target = scope || local_name.to_s.sub(/^#{target_model.model_name.plural}_/, '')
134
+
135
+ scope(:"#{local_name}_between", ->(after, before) {
136
+ public_send(:"#{local_name}_after", after).
137
+ public_send(:"#{local_name}_before", before)
138
+ })
139
+ scope(:"#{local_name}_after", ->(date_or_time) {
140
+ next unless date_or_time
141
+
142
+ instance_eval(&relation).
143
+ merge(
144
+ target_model.public_send(:"#{name_on_target}_after", date_or_time)
145
+ )
146
+ })
147
+ scope(:"#{local_name}_before", ->(date_or_time) {
148
+ next unless date_or_time
149
+
150
+ instance_eval(&relation).
151
+ merge(
152
+ target_model.public_send(:"#{name_on_target}_before", date_or_time)
153
+ )
154
+ })
155
+ end
156
+ end
157
+ end
158
+ end
159
+
160
+ ActiveRecord::Base.class_eval do
161
+ include ActiveRecord::DateRangeScopes
162
+ end
@@ -0,0 +1,7 @@
1
+ module ActiveRecord
2
+ module DateRangeScopes
3
+ def self.version
4
+ "0.1.2"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,2 @@
1
+ require 'active_record/date_range_scopes/version'
2
+ require 'active_record/date_range_scopes'
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: active_record_date_range_scopes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Tyler Rick
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-01-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.17'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.17'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ description: Easily create ActiveRecord date range scopes
84
+ email:
85
+ - tyler@tylerrick.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - Changelog.md
94
+ - Gemfile
95
+ - License
96
+ - Rakefile
97
+ - Readme.md
98
+ - active_record_date_range_scopes.gemspec
99
+ - bin/console
100
+ - bin/setup
101
+ - lib/active_record/date_range_scopes.rb
102
+ - lib/active_record/date_range_scopes/version.rb
103
+ - lib/active_record_date_range_scopes.rb
104
+ homepage: http://github.com/TylerRick/active_record_date_range_scopes
105
+ licenses: []
106
+ metadata:
107
+ homepage_uri: http://github.com/TylerRick/active_record_date_range_scopes
108
+ source_code_uri: http://github.com/TylerRick/active_record_date_range_scopes
109
+ changelog_uri: http://github.com/TylerRick/active_record_date_range_scopes/blob/master/Changelog.md
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubygems_version: 3.0.3
126
+ signing_key:
127
+ specification_version: 4
128
+ summary: Easily create ActiveRecord date range scopes
129
+ test_files: []