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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 871778cc70f4d4da9385d3d38e9d8e5b945e459ffe0e78c7e340b8e12f795ef6
4
- data.tar.gz: 9d9dfbc6e0256c8b91db7a788ace40cd9ffd583cd5dda8713907545b776ea97f
3
+ metadata.gz: 419bcae7122a053a5f1e52a9e0709d20128a0591d6ffa8542bf23358e81b31e9
4
+ data.tar.gz: 7e16d17cb32803d234e6c598f88ff896de9646b534dafa49265bc16f50b49235
5
5
  SHA512:
6
- metadata.gz: 9965445d6ca087fe9e860b75be161f3ecf22c949d7c44c5c521e5d50938f8d7cb7f9f15af1972766f753c5b1abe748eae4a51a99d57ef12be786cca5c322a347
7
- data.tar.gz: 6662a72e566791c18d8439685f1202e12a7ed32ac60917cc1aa64384e1de53ea6ed5b89cb73f5091435ebe5656eaeb16c0466eb01d073eccd2196f9adc5c13f3
6
+ metadata.gz: d6cb9fd5f4e4347b57dba10479409e8cea8d53f1fae874489260b5c767705aea0ebb47b42d670e9ea82884f9a6ed94d7bef3f8c32568f1b06407dfefc71c75de
7
+ data.tar.gz: c799ef06ce0d3ad4ff2cc356b0ec368351ae80e7dac1f5805aacef656f9ba81b5bb5603572e9b02be2121f98bcc814943fafa4a9c2858b32ce9a03201c14847b
@@ -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.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
- # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
40
- ruby: [ 3.3, 3.2, 3.1, jruby, truffleruby ]
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@v2
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
- require:
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
- IgnoreCopDirectives: true
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`
@@ -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', '~>7.0'
26
+ gem.add_runtime_dependency 'activerecord', '>=7.2'
27
27
 
28
28
  gem.add_development_dependency 'rake'
29
29
  gem.add_development_dependency 'rubocop'
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  platform :ruby do
4
4
  gem 'pg'
5
- gem 'sqlite3', '<2'
5
+ gem 'sqlite3'
6
6
  end
7
7
 
8
8
  gem 'minitest-reporters'
@@ -15,4 +15,4 @@ platform :jruby do
15
15
  gem 'jdbc-sqlite3', github: 'jruby/activerecord-jdbc-adapter'
16
16
  end
17
17
 
18
- gem 'activerecord', '~>7.1.0'
18
+ gem 'activerecord', '~>7.2.0'
@@ -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(value)
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(value)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Activerecord
4
4
  module Time
5
- VERSION = '0.22.0'
5
+ VERSION = '1.1.0'
6
6
  end
7
7
  end
@@ -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 >= 0 && hour <= 23
45
+ raise "Invalid hour: #{hour}" unless hour.between?(0, 23)
46
46
  end
47
- raise "Invalid minute: #{minute}" unless minute >= 0 && minute <= 59
48
- raise "Invalid second: #{second}" unless second >= 0 && second <= 59
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.find do |f|
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: 0.22.0
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: 2024-04-28 00:00:00.000000000 Z
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.0'
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.0'
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/gems_ar70.rb
131
- - gemfiles/gems_ar71.rb
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.5.9
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.
@@ -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'