arel_extensions 1.3.8 → 1.3.9

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: db1001f3712bc329382b77345bde00ff5c1a074a6ea757841b40fcaa230f9c08
4
- data.tar.gz: de6cb9e86796ac091ae148f80888a4093ecbe0df9312ad5cbbcd16f7efc6b8f4
3
+ metadata.gz: 297d1d9b84e726d164e0e001cbe2402c81f3cb1491aa15f10854e508a65d0a8b
4
+ data.tar.gz: 23697fa470d0524218097318b9f89a0d78e029e16bdeac5e23b24b6610369f6e
5
5
  SHA512:
6
- metadata.gz: f225335f190b18b56c88e64cea0eef39771f6e937bebd57d814a6c4562c96236e2708f905eef4ec80801c9d6c475aebc717b99c265c2cbccbda46b30e0798786
7
- data.tar.gz: e89e25e2336dee7d1f617f05ceb30df609dfdca52ff65e73e86fc2baaff91c1ae8d51e8d50510ba0981cc8bac9d62327164204957afbf18a1cf1c43728a3bf5d
6
+ metadata.gz: 2e4bffd39e53121a46cf1aacc279747aae8e44119c6cdb3eba1e633e823ee2b3c13596f20139799be6a2ef619b7394aa1e0659569b63643bf08a8516777c84ac
7
+ data.tar.gz: 1dc5fadc6064410bff969f77ab61b52308b0c60b2a2009868a40a6055b4194440763fd82a409c9a1b05911106b863ca1cc94066d954db0faf895caa7ce5516ed
@@ -0,0 +1,29 @@
1
+ name: "Publish Gems"
2
+ on:
3
+ release:
4
+ types: [published]
5
+
6
+ jobs:
7
+ publish_gems:
8
+ name: Publish to Rubygems
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v3
12
+ - name: setup ruby 3.2
13
+ uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: 3.2
16
+ - name: Fetch Github Release Asset
17
+ uses: dsaltares/fetch-gh-release-asset@master
18
+ with:
19
+ file: "arel_extensions.*.gem"
20
+ regex: true
21
+ token: ${{ secrets.GITHUB_TOKEN }}
22
+ - name: List gems
23
+ run: ls -l *.gem
24
+ - name: Release Gems
25
+ uses: cadwallion/publish-rubygems-action@master
26
+ env:
27
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
28
+ RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
29
+ RELEASE_COMMAND: bin/publish
@@ -0,0 +1,30 @@
1
+ name: Release
2
+ on:
3
+ workflow_run:
4
+ workflows: ["Build and Test"]
5
+ branches: [master]
6
+ types:
7
+ - completed
8
+
9
+ jobs:
10
+ build_gems:
11
+ name: Build Gemfiles
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ - name: setup ruby 3.2
16
+ uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: 3.2
19
+ - name: build gems
20
+ run: |
21
+ bin/build
22
+ - name: release
23
+ uses: softprops/action-gh-release@v1
24
+ with:
25
+ tag_name: ${{ github.ref }}-${{ steps.vars.outputs.sha_short }}
26
+ draft: true
27
+ files: |
28
+ ./arel_extensions-*.gem
29
+ env:
30
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -49,9 +49,6 @@ jobs:
49
49
  run: |
50
50
  sudo apt-get update -q
51
51
  sudo apt-get install -y freetds-dev
52
- - name: Update system-wide gems
53
- if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
54
- run: gem update --system --no-document
55
52
  - name: Setup Gemfile for arelx 2.x
56
53
  if: ${{ matrix.versions.arelx == 2 }}
57
54
  run: |
@@ -109,9 +106,6 @@ jobs:
109
106
  run: |
110
107
  sudo apt-get update -q
111
108
  sudo apt-get install -y freetds-dev
112
- - name: Update system-wide gems
113
- if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
114
- run: gem update --system --no-document
115
109
  - name: Setup Gemfile
116
110
  if: ${{ matrix.versions.arelx == 2 }}
117
111
  run: |
@@ -191,9 +185,6 @@ jobs:
191
185
  run: |
192
186
  sudo apt-get update -q
193
187
  sudo apt-get install -y freetds-dev
194
- - name: Update system-wide gems
195
- if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
196
- run: gem update --system --no-document
197
188
  - name: Setup Gemfile
198
189
  if: ${{ matrix.versions.arelx == 2 }}
199
190
  run: |
@@ -268,9 +259,6 @@ jobs:
268
259
  run: |
269
260
  sudo apt-get update -q
270
261
  sudo apt-get install -y freetds-dev
271
- - name: Update system-wide gems
272
- if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
273
- run: gem update --system --no-document
274
262
  - name: Setup Gemfile
275
263
  if: ${{ matrix.versions.arelx == 2 }}
276
264
  run: |
@@ -337,9 +325,6 @@ jobs:
337
325
  version: ${{ matrix.mssql }}
338
326
  install: sqlengine, sqlclient, sqlpackage, localdb
339
327
  sa-password: Password12!
340
- - name: Update system-wide gems
341
- if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
342
- run: gem update --system --no-document
343
328
  - name: Setup Gemfile
344
329
  if: ${{ matrix.versions.arelx == 2 }}
345
330
  run: |
data/NEWS.md CHANGED
@@ -1,6 +1,36 @@
1
1
  # News
2
2
 
3
- ## Current Release
3
+ ## Release v2.1.9/v1.3.9
4
+
5
+ ### Bug Fixes
6
+
7
+ - Postgres:
8
+ - Datetime formatting in postgres now behaves like mysql: if the target
9
+ timezone is a string, we automatically consider that you're trying to
10
+ convert from `UTC`.
11
+ - Datetime casting will now automatically ask for a
12
+ `timestamp without timezone`, also aligning with the expected befavior
13
+ in mysql. This also makes casting work better with timezone conversion,
14
+ especially if you don't pass the timezone from which you're converting
15
+ to.
16
+ ```ruby
17
+ scope
18
+ .select(Arel.quoted('2022-02-01 10:42:00')
19
+ .cast(:datetime)
20
+ .format_date('%Y/%m/%d %H:%M:%S', 'Europe/Paris')
21
+ .as('res'))
22
+ ```
23
+ Will produce:
24
+ ```sql
25
+ SELECT TO_CHAR(
26
+ CAST('2022-02-01 10:42:00' AS timestamp without time zone) AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris',
27
+ 'YYYY/MM/DD HH24:MI:SS'
28
+ )
29
+ AS "res"
30
+ -- …
31
+ ```
32
+
33
+ ## Release v2.1.7/v1.3.7
4
34
 
5
35
  ### New Features
6
36
 
@@ -8,11 +38,11 @@
8
38
  The actual behavior of `format` is inconsistent across DB vendors: in mysql we
9
39
  can format dates and numbers with it, and in the other ones we only format
10
40
  dates.
11
-
41
+
12
42
  We're planning on normalizing this behavior. We want `format` to "cleverly"
13
43
  format dates or numbers, and `format_date` / `format_number` to strictly
14
44
  format dates / numbers.
15
-
45
+
16
46
  The introduction of `format_date` is the first step in this direction.
17
47
 
18
48
  ## Release v2.1.6/v1.3.6
data/README.md CHANGED
@@ -173,9 +173,9 @@ The second form accepts 2 kinds of values:
173
173
 
174
174
  ```ruby
175
175
  t[:birthdate].format('%Y/%m/%d %H:%M:%S', 'posix/Pacific/Tahiti')
176
- # => DATE_FORMAT(CONVERT_TZ(CAST(my_table.birthdate AS datetime), 'UTC', 'posix/Pacific/Tahiti'), '%Y/%m/%d %H:%i:%S') ## MySQL
177
- # => TO_CHAR(CAST(my_table.birthdate AS timestamp with time zone) AT TIME ZONE 'posix/Pacific/Tahiti', 'YYYY/MM/DD HH24:MI:SS') ## PostgreSQL
178
- # => CONVERT(datetime, my_table.birthdate) AT TIME ZONE 'UTC' AT TIME ZONE N'posix/Pacific/Tahiti' ## SQL Server (& truncated for clarity)
176
+ # => DATE_FORMAT(CONVERT_TZ(CAST(my_table.birthdate AS datetime), 'UTC', 'posix/Pacific/Tahiti'), '%Y/%m/%d %H:%i:%S') ## MySQL
177
+ # => TO_CHAR(CAST(my_table.birthdate AS timestamp with time zone) AT TIME ZONE 'UTC' AT TIME ZONE 'posix/Pacific/Tahiti', 'YYYY/MM/DD HH24:MI:SS') ## PostgreSQL
178
+ # => CONVERT(datetime, my_table.birthdate) AT TIME ZONE 'UTC' AT TIME ZONE N'posix/Pacific/Tahiti' ## SQL Server (& truncated for clarity)
179
179
  # ^^^^^^^^^^^^^^^^^^^^ 🚨 Invalid timezone for SQL Server. Explanation below.
180
180
  ```
181
181
 
data/bin/build ADDED
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env sh
2
+ set -e
3
+
4
+ # VERSION ~> 1
5
+ echo "Packaging v1"
6
+ cp ./version_v1.rb lib/arel_extensions/version.rb
7
+ cp ./gemspecs/arel_extensions-v1.gemspec ./arel_extensions.gemspec
8
+ gem build ./arel_extensions.gemspec
9
+
10
+ # VERSION ~> 2
11
+ echo "Packaging v2"
12
+ cp ./version_v2.rb lib/arel_extensions/version.rb
13
+ cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
14
+ gem build ./arel_extensions.gemspec
15
+
data/bin/publish ADDED
@@ -0,0 +1,8 @@
1
+ #! /usr/bin/env sh
2
+ set -e
3
+
4
+ find . -name "arel_extensions*.gem" | while read packaged_gem ; do
5
+ echo "Publishing $packaged_gem"
6
+ gem push "$packaged_gem"
7
+ done
8
+
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = '1.3.8'.freeze
2
+ VERSION = '1.3.9'.freeze
3
3
  end
@@ -190,7 +190,7 @@ module ArelExtensions
190
190
  collector << ' AT TIME ZONE '
191
191
  collector = visit Arel.quoted(dst_tz), collector
192
192
  when String
193
- collector << ') AT TIME ZONE '
193
+ collector << ") AT TIME ZONE 'UTC' AT TIME ZONE "
194
194
  collector = visit Arel.quoted(o.time_zone), collector
195
195
  end
196
196
  collector << COMMA
@@ -392,7 +392,7 @@ module ArelExtensions
392
392
  when :number, :decimal, :float
393
393
  'numeric'
394
394
  when :datetime
395
- 'timestamp with time zone'
395
+ 'timestamp without time zone'
396
396
  when :date
397
397
  'date'
398
398
  when :binary
@@ -121,6 +121,26 @@ module Arel
121
121
  )
122
122
  end
123
123
 
124
+ def self.json_true
125
+ res = Arel.grouping(Arel.quoted('true'))
126
+ res.instance_eval {
127
+ def return_type
128
+ :boolean
129
+ end
130
+ }
131
+ res
132
+ end
133
+
134
+ def self.json_false
135
+ res = Arel.grouping(Arel.quoted('false'))
136
+ res.instance_eval {
137
+ def return_type
138
+ :boolean
139
+ end
140
+ }
141
+ res
142
+ end
143
+
124
144
  # The NULL literal.
125
145
  def self.null
126
146
  Arel.quoted(nil)
@@ -501,7 +501,7 @@ module ArelExtensions
501
501
  #
502
502
  # MySQL is happy to consider that times by default are in UTC.
503
503
  assert_equal '2014/03/03 13:42:00', t(@lucas, @updated_at.send(method, '%Y/%m/%d %H:%M:%S', {tz['utc'] => tz['paris']}))
504
- refute_equal '2014/03/03 13:42:00', t(@lucas, @updated_at.send(method, '%Y/%m/%d %H:%M:%S', tz['paris'])) if !['mysql'].include?(ENV['DB'])
504
+ refute_equal '2014/03/03 13:42:00', t(@lucas, @updated_at.send(method, '%Y/%m/%d %H:%M:%S', tz['paris'])) if !%w[mysql postgresql].include?(ENV['DB'])
505
505
 
506
506
  # Winter/Summer time
507
507
  assert_equal '2014/08/03 14:42:00', t(@lucas, (@updated_at + 5.months).send(method, '%Y/%m/%d %H:%M:%S', {tz['utc'] => tz['paris']}))
data/version_v1.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = '1.3.8'.freeze
2
+ VERSION = '1.3.9'.freeze
3
3
  end
data/version_v2.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = '2.1.8'.freeze
2
+ VERSION = '2.1.9'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.8
4
+ version: 1.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yann Azoury
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-11-14 00:00:00.000000000 Z
13
+ date: 2024-05-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: arel
@@ -67,6 +67,8 @@ extra_rdoc_files:
67
67
  - functions.html
68
68
  files:
69
69
  - ".codeclimate.yml"
70
+ - ".github/workflows/publish.yml"
71
+ - ".github/workflows/release.yml"
70
72
  - ".github/workflows/ruby.yml"
71
73
  - ".gitignore"
72
74
  - ".rubocop.yml"
@@ -79,6 +81,8 @@ files:
79
81
  - TODO
80
82
  - appveyor.yml
81
83
  - arel_extensions.gemspec
84
+ - bin/build
85
+ - bin/publish
82
86
  - dev/compose.yaml
83
87
  - functions.html
84
88
  - gemfiles/rails3.gemfile
@@ -210,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
214
  - !ruby/object:Gem::Version
211
215
  version: '0'
212
216
  requirements: []
213
- rubygems_version: 3.3.5
217
+ rubygems_version: 3.4.19
214
218
  signing_key:
215
219
  specification_version: 4
216
220
  summary: Extending Arel