activerecord-time 0.22.0 → 1.1.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +10 -5
- data/.rubocop.yml +2 -2
- data/README.md +6 -0
- data/activerecord-time.gemspec +1 -1
- data/gemfiles/common.gemfile +1 -1
- data/gemfiles/{gems_ar71.rb → gems_ar72.rb} +1 -1
- data/gemfiles/gems_ar80.rb +18 -0
- data/lib/active_record/type/time.rb +37 -0
- data/lib/activerecord-time/extension.rb +2 -19
- data/lib/activerecord-time/version.rb +1 -1
- data/lib/time_of_day/core_ext.rb +2 -0
- data/lib/time_of_day.rb +3 -3
- data/matrix_test.rb +2 -1
- metadata +10 -12
- data/gemfiles/gems_ar70.rb +0 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 419bcae7122a053a5f1e52a9e0709d20128a0591d6ffa8542bf23358e81b31e9
|
|
4
|
+
data.tar.gz: 7e16d17cb32803d234e6c598f88ff896de9646b534dafa49265bc16f50b49235
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d6cb9fd5f4e4347b57dba10479409e8cea8d53f1fae874489260b5c767705aea0ebb47b42d670e9ea82884f9a6ed94d7bef3f8c32568f1b06407dfefc71c75de
|
|
7
|
+
data.tar.gz: c799ef06ce0d3ad4ff2cc356b0ec368351ae80e7dac1f5805aacef656f9ba81b5bb5603572e9b02be2121f98bcc814943fafa4a9c2858b32ce9a03201c14847b
|
data/.github/workflows/test.yml
CHANGED
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
- uses: actions/checkout@v2
|
|
19
19
|
- uses: ruby/setup-ruby@v1
|
|
20
20
|
with:
|
|
21
|
-
ruby-version: '3.
|
|
21
|
+
ruby-version: '3.4'
|
|
22
22
|
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
23
23
|
- name: Rubocop
|
|
24
24
|
run: bundle exec rubocop --auto-correct-all
|
|
@@ -36,18 +36,23 @@ jobs:
|
|
|
36
36
|
strategy:
|
|
37
37
|
fail-fast: false
|
|
38
38
|
matrix:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
gemfile: [ ar71, ar70 ]
|
|
39
|
+
ruby: [ 3.4, 3.3, jruby, truffleruby ]
|
|
40
|
+
gemfile: [ ar80, ar72 ]
|
|
42
41
|
adapter: [ postgresql, sqlite3 ]
|
|
43
42
|
exclude:
|
|
44
43
|
- ruby: jruby
|
|
44
|
+
gemfile: ar72 # Not released, yet.
|
|
45
|
+
- ruby: jruby
|
|
46
|
+
gemfile: ar80 # Fails, please investigate.
|
|
47
|
+
- ruby: truffleruby
|
|
48
|
+
gemfile: ar71 # Fails, please investigate.
|
|
45
49
|
- ruby: truffleruby
|
|
50
|
+
gemfile: ar70 # Fails, please investigate.
|
|
46
51
|
env:
|
|
47
52
|
ADAPTER: ${{ matrix.adapter }}
|
|
48
53
|
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/gems_${{ matrix.gemfile }}.rb
|
|
49
54
|
steps:
|
|
50
|
-
- uses: actions/checkout@
|
|
55
|
+
- uses: actions/checkout@v4
|
|
51
56
|
- uses: ruby/setup-ruby@v1
|
|
52
57
|
with:
|
|
53
58
|
ruby-version: ${{ matrix.ruby }}
|
data/.rubocop.yml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
|
2
|
-
|
|
2
|
+
plugins:
|
|
3
3
|
- rubocop-performance
|
|
4
4
|
- rubocop-rails
|
|
5
5
|
- rubocop-rake
|
|
@@ -30,7 +30,7 @@ Layout/LineLength:
|
|
|
30
30
|
Max: 107
|
|
31
31
|
AllowHeredoc: true
|
|
32
32
|
AllowURI: true
|
|
33
|
-
|
|
33
|
+
AllowCopDirectives: true
|
|
34
34
|
|
|
35
35
|
Layout/MultilineMethodCallIndentation:
|
|
36
36
|
EnforcedStyle: indented
|
data/README.md
CHANGED
|
@@ -124,3 +124,9 @@ Run tests using
|
|
|
124
124
|
./matrix_test.rb
|
|
125
125
|
|
|
126
126
|
This will run the tests for the same environments as travis-ci.
|
|
127
|
+
|
|
128
|
+
## Release
|
|
129
|
+
|
|
130
|
+
* Update the version in [lib/activerecord-time/version.rb](lib/activerecord-time/version.rb)
|
|
131
|
+
* Commit all changes
|
|
132
|
+
* Run `rake release`
|
data/activerecord-time.gemspec
CHANGED
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
|
|
|
23
23
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
24
24
|
gem.require_paths = %w[lib]
|
|
25
25
|
|
|
26
|
-
gem.add_runtime_dependency 'activerecord', '
|
|
26
|
+
gem.add_runtime_dependency 'activerecord', '>=7.2'
|
|
27
27
|
|
|
28
28
|
gem.add_development_dependency 'rake'
|
|
29
29
|
gem.add_development_dependency 'rubocop'
|
data/gemfiles/common.gemfile
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
eval File.read("#{File.dirname __FILE__}/common.gemfile")
|
|
4
|
+
|
|
5
|
+
platform :jruby do
|
|
6
|
+
git_source(:github) do |repo_name|
|
|
7
|
+
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
|
|
8
|
+
"https://github.com/#{repo_name}.git"
|
|
9
|
+
end
|
|
10
|
+
gem 'activerecord-jdbc-adapter', github: 'jruby/activerecord-jdbc-adapter'
|
|
11
|
+
# gem 'activerecord-jdbcderby-adapter', github: 'jruby/activerecord-jdbc-adapter'
|
|
12
|
+
gem 'activerecord-jdbcpostgresql-adapter', github: 'jruby/activerecord-jdbc-adapter'
|
|
13
|
+
gem 'activerecord-jdbcsqlite3-adapter', github: 'jruby/activerecord-jdbc-adapter'
|
|
14
|
+
gem 'jdbc-postgres', github: 'jruby/activerecord-jdbc-adapter'
|
|
15
|
+
gem 'jdbc-sqlite3', github: 'jruby/activerecord-jdbc-adapter'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
gem 'activerecord', '~>8.0.0'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveRecord
|
|
4
|
+
module Type
|
|
5
|
+
class Time < ActiveModel::Type::Time
|
|
6
|
+
include Internal::Timezone
|
|
7
|
+
|
|
8
|
+
class Value < DelegateClass(::TimeOfDay) # :nodoc:
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def map(value)
|
|
12
|
+
value
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def serialize(value)
|
|
16
|
+
case value = super
|
|
17
|
+
when ::TimeOfDay
|
|
18
|
+
Value.new(value)
|
|
19
|
+
else
|
|
20
|
+
value
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def serialize_cast_value(value)
|
|
25
|
+
Value.new(value) if value
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private def cast_value(value)
|
|
29
|
+
return value.time_of_day if value.is_a?(::DateTime) || value.is_a?(::Time)
|
|
30
|
+
return value unless value.is_a?(::String)
|
|
31
|
+
return if value.empty?
|
|
32
|
+
|
|
33
|
+
TimeOfDay._parse(value)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -1,38 +1,21 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'active_record/connection_adapters/abstract/quoting'
|
|
4
|
-
|
|
5
3
|
module Activerecord
|
|
6
4
|
module Time
|
|
7
5
|
module Quoting
|
|
8
6
|
def quote(value)
|
|
9
7
|
return "'#{value}'" if value.is_a?(TimeOfDay)
|
|
10
8
|
|
|
11
|
-
super
|
|
9
|
+
super
|
|
12
10
|
end
|
|
13
11
|
|
|
14
12
|
def type_cast(value)
|
|
15
13
|
return value.to_s if value.is_a?(TimeOfDay)
|
|
16
14
|
|
|
17
|
-
super
|
|
15
|
+
super
|
|
18
16
|
end
|
|
19
17
|
end
|
|
20
18
|
end
|
|
21
19
|
end
|
|
22
20
|
|
|
23
21
|
ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend Activerecord::Time::Quoting
|
|
24
|
-
|
|
25
|
-
module Activerecord
|
|
26
|
-
module Time
|
|
27
|
-
module Casting
|
|
28
|
-
private def cast_value(value)
|
|
29
|
-
return value.time_of_day if value.is_a?(::DateTime) || value.is_a?(::Time)
|
|
30
|
-
return value unless value.is_a?(::String)
|
|
31
|
-
return if value.empty?
|
|
32
|
-
|
|
33
|
-
TimeOfDay._parse(value)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
ActiveRecord::Type::Time.prepend Activerecord::Time::Casting
|
data/lib/time_of_day/core_ext.rb
CHANGED
|
@@ -23,6 +23,8 @@ end
|
|
|
23
23
|
|
|
24
24
|
class Date
|
|
25
25
|
def at(time_of_day)
|
|
26
|
+
return if time_of_day.nil?
|
|
27
|
+
|
|
26
28
|
time_of_day = TimeOfDay.parse(time_of_day) if time_of_day.is_a?(String)
|
|
27
29
|
zone = Time.zone || Time
|
|
28
30
|
zone.local(year, month, day, time_of_day.hour, time_of_day.minute, time_of_day.second)
|
data/lib/time_of_day.rb
CHANGED
|
@@ -42,10 +42,10 @@ class TimeOfDay
|
|
|
42
42
|
raise "Invalid TimeOfDay. #{hour}:#{minute}:#{second} given, but highest allowed value is 24:00:00"
|
|
43
43
|
end
|
|
44
44
|
else
|
|
45
|
-
raise "Invalid hour: #{hour}" unless hour
|
|
45
|
+
raise "Invalid hour: #{hour}" unless hour.between?(0, 23)
|
|
46
46
|
end
|
|
47
|
-
raise "Invalid minute: #{minute}" unless minute
|
|
48
|
-
raise "Invalid second: #{second}" unless second
|
|
47
|
+
raise "Invalid minute: #{minute}" unless minute.between?(0, 59)
|
|
48
|
+
raise "Invalid second: #{second}" unless second.between?(0, 59)
|
|
49
49
|
|
|
50
50
|
@hour = hour
|
|
51
51
|
@minute = minute
|
data/matrix_test.rb
CHANGED
|
@@ -6,6 +6,7 @@ system('rubocop --autocorrect-all') || exit(1)
|
|
|
6
6
|
update_gemfiles = ARGV.delete('--update')
|
|
7
7
|
|
|
8
8
|
require 'yaml'
|
|
9
|
+
require 'bundler'
|
|
9
10
|
actions = YAML.safe_load_file('.github/workflows/test.yml')
|
|
10
11
|
|
|
11
12
|
def run_script(ruby, env, gemfile)
|
|
@@ -36,7 +37,7 @@ def use_gemfile(ruby, gemfile, update_gemfiles)
|
|
|
36
37
|
end
|
|
37
38
|
|
|
38
39
|
def bad_variant?(bad_variants, ruby, gemfile = nil, adapter = nil)
|
|
39
|
-
bad_variants
|
|
40
|
+
bad_variants&.find do |f|
|
|
40
41
|
!(ruby.nil? ^ f['ruby'].nil?) && f['ruby'] == ruby &&
|
|
41
42
|
!(gemfile.nil? ^ f['gemfile'].nil?) && f['gemfile'] == gemfile &&
|
|
42
43
|
!(adapter.nil? ^ f['adapter'].nil?) && f['adapter'] == adapter
|
metadata
CHANGED
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activerecord-time
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Uwe Kubosch
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activerecord
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
16
|
+
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '7.
|
|
18
|
+
version: '7.2'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
|
-
- - "
|
|
23
|
+
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '7.
|
|
25
|
+
version: '7.2'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: rake
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -127,8 +126,9 @@ files:
|
|
|
127
126
|
- Rakefile
|
|
128
127
|
- activerecord-time.gemspec
|
|
129
128
|
- gemfiles/common.gemfile
|
|
130
|
-
- gemfiles/
|
|
131
|
-
- gemfiles/
|
|
129
|
+
- gemfiles/gems_ar72.rb
|
|
130
|
+
- gemfiles/gems_ar80.rb
|
|
131
|
+
- lib/active_record/type/time.rb
|
|
132
132
|
- lib/activerecord-time.rb
|
|
133
133
|
- lib/activerecord-time/extension.rb
|
|
134
134
|
- lib/activerecord-time/version.rb
|
|
@@ -143,7 +143,6 @@ homepage: https://github.com/donv/activerecord-time
|
|
|
143
143
|
licenses:
|
|
144
144
|
- MIT
|
|
145
145
|
metadata: {}
|
|
146
|
-
post_install_message:
|
|
147
146
|
rdoc_options: []
|
|
148
147
|
require_paths:
|
|
149
148
|
- lib
|
|
@@ -158,8 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
158
157
|
- !ruby/object:Gem::Version
|
|
159
158
|
version: '0'
|
|
160
159
|
requirements: []
|
|
161
|
-
rubygems_version: 3.
|
|
162
|
-
signing_key:
|
|
160
|
+
rubygems_version: 3.6.9
|
|
163
161
|
specification_version: 4
|
|
164
162
|
summary: A handler for storing TimeOfDay objects in ActiveRecord objects as sql time
|
|
165
163
|
values.
|
data/gemfiles/gems_ar70.rb
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
eval File.read("#{File.dirname __FILE__}/common.gemfile")
|
|
4
|
-
|
|
5
|
-
platform :jruby do
|
|
6
|
-
# gem 'activerecord-jdbc-adapter'
|
|
7
|
-
# gem 'activerecord-jdbcderby-adapter'
|
|
8
|
-
gem 'activerecord-jdbcpostgresql-adapter'
|
|
9
|
-
gem 'activerecord-jdbcsqlite3-adapter'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
gem 'activerecord', '~>7.0.0'
|