arel_extensions 1.2.18 → 1.2.19

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: 8aa9a6b85c040899418d6aa0b3be8c745eccaa9a7f91ccd9c7696ba741e506af
4
- data.tar.gz: 8a593bd6fe526d54c3b81e75621cc3045149410df842aae0357478b13f39abe7
3
+ metadata.gz: 8b1349341148022d22f5f1db49226c8279bfc9474e48dfbeed4741f68dedc1bc
4
+ data.tar.gz: 8ef43ffbefa6e47f95bde8e9212b195e877cd97700ec113cb0a394fd0eff8014
5
5
  SHA512:
6
- metadata.gz: 381a51239e6eb8ab5db7c64aecbb3b8595a80466c166064ed7d8e7b30a4b9fffc7b23acd2d1aa6871a9d7c5f65239b162fa1386c7a15b956f4d3786c44b4214d
7
- data.tar.gz: e31d110fa811e4ca31085fdceeb8df319af19a87781eec92131550b68e3a84f3fe655d0b9cf71b9d6c89a2d6098b08910310893a199a9e0f41e2319dc297d6e0
6
+ metadata.gz: 962602c8cf871c1456401b48edd21e8348af1a54b851873c634ce64248bd0dbd293a798adb3bb3f3e9f62fe4778f74f3627c54bffbd8fb5aa62a920cdc0c3846
7
+ data.tar.gz: df1669b0b8b3a87dce3d68d402d1e89d3abca492e66b9032bb70a2817471b6a1a64f879674c6b84a201e3f8865d62920d694229bcd65ec0dde2da4818a72a3de
@@ -0,0 +1,102 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+ branches: [ master ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+
21
+ services:
22
+ postgres:
23
+ image: postgres:11.6-alpine
24
+ env:
25
+ POSTGRES_DB: arext_test
26
+ ports:
27
+ - 5432:5432
28
+ # needed because the postgres container does not provide a healthcheck
29
+ options: >-
30
+ --health-cmd "pg_isready -d arext_test -U postgres -p 5432"
31
+ --health-interval 10s
32
+ --health-timeout 5s
33
+ --health-retries 5
34
+ mysql:
35
+ image: mysql:5.7
36
+ env:
37
+ MYSQL_ALLOW_EMPTY_PASSWORD: true
38
+ MYSQL_USERNAME: travis
39
+ MYSQL_DATABASE: arext_test
40
+ ports:
41
+ - 3306:3306
42
+ options: >-
43
+ --health-cmd="mysqladmin ping"
44
+ --health-interval=10s
45
+ --health-timeout=5s
46
+ --health-retries=3
47
+
48
+ strategy:
49
+ matrix:
50
+ ruby-version:
51
+ - 3.0.0-preview1
52
+ - 2.7
53
+ - 2.5
54
+ - 2.3
55
+ rails-version:
56
+ - 6_1
57
+ - 6
58
+ - 5_2
59
+ exclude:
60
+ - ruby-version: 2.3
61
+ rails-version: 6_1
62
+ - ruby-version: 2.3
63
+ rails-version: 6
64
+ - ruby-version: 3.0.0-preview1
65
+ rails-version: 5.2
66
+ continue-on-error: ${{ true }}
67
+
68
+ steps:
69
+ - uses: actions/checkout@v2
70
+ - name: Set up Ruby
71
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
72
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
73
+ # uses: ruby/setup-ruby@v1
74
+ uses: ruby/setup-ruby@21351ecc0a7c196081abca5dc55b08f085efe09a
75
+ with:
76
+ ruby-version: ${{ matrix.ruby-version }}
77
+ - name: Setup gemspec
78
+ if: ${{ matrix.rails-version == '6_1' || matrix.rails-version == '6' }}
79
+ run: cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
80
+ - name: Install dependencies
81
+ run: |
82
+ export BUNDLE_GEMFILE=gemfiles/rails${{ matrix.rails-version }}.gemfile
83
+ bundle install
84
+ - name: Run test to_sql
85
+ run: rake test:to_sql
86
+ - name: Run test Postgres
87
+ env:
88
+ PGHOST: localhost
89
+ PGUSER: postgres
90
+ run: rake test:postgresql
91
+ - name: Run test MySql
92
+ env:
93
+ DB_CONNECTION: mysql
94
+ DB_HOST: 127.0.0.1
95
+ DB_PORT: 3306
96
+ DB_DATABASE: arext_test
97
+ DB_USERNAME: travis
98
+ run: |
99
+ sudo apt-get install -y mysql-client
100
+ mysql --host 127.0.0.1 --port 3306 -uroot -e 'create user travis;'
101
+ mysql --host 127.0.0.1 --port 3306 -uroot -e 'GRANT ALL PRIVILEGES ON arext_test.* TO travis;'
102
+ rake test:mysql
@@ -20,9 +20,9 @@ Gem::Specification.new do |s|
20
20
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
21
  s.require_paths = ["lib"]
22
22
 
23
- s.add_dependency('activerecord', '>= 6.0')
23
+ s.add_dependency('arel', '>= 6.0')
24
24
 
25
25
  s.add_development_dependency('minitest', '~> 5.9')
26
26
  s.add_development_dependency('rdoc', '~> 4.0')
27
27
  s.add_development_dependency('rake', '~> 12.3.3')
28
- end
28
+ end
@@ -12,8 +12,8 @@ group :development, :test do
12
12
  gem "mysql2", '0.5.2', platforms: [:mri, :mswin, :mingw]
13
13
  gem "pg",'< 1.0.0', platforms: [:mri, :mingw]
14
14
 
15
- gem "tiny_tds", platforms: [:mri, :mingw] if RUBY_PLATFORM =~ /windows/
16
- gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
15
+ #gem "tiny_tds", platforms: [:mri, :mingw] if RUBY_PLATFORM =~ /windows/
16
+ #gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
17
17
 
18
18
  gem 'ruby-oci8', platforms: [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
19
19
  gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
@@ -27,4 +27,4 @@ group :development, :test do
27
27
  gem "activerecord-jdbcmssql-adapter", platforms: :jruby
28
28
  end
29
29
 
30
- gemspec path: "../gemspec_v2/"
30
+ gemspec path: "../"
@@ -0,0 +1,30 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'rails', '~> 6.1.0'
4
+
5
+
6
+ group :development, :test do
7
+ gem 'activesupport', '~> 6.1.0'
8
+ gem 'activemodel', '~> 6.1.0'
9
+ gem 'activerecord', '~> 6.1.0'
10
+
11
+ gem "sqlite3", '~> 1.4', platforms: [:mri, :mswin, :mingw]
12
+ gem "mysql2", '0.5.2', platforms: [:mri, :mswin, :mingw]
13
+ gem "pg",'~> 1.1', platforms: [:mri, :mingw]
14
+
15
+ #gem "tiny_tds", platforms: [:mri, :mingw] if RUBY_PLATFORM =~ /windows/
16
+ #gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
17
+
18
+ gem 'ruby-oci8', platforms: [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
19
+ gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
20
+
21
+ # for JRuby
22
+ gem 'activerecord-jdbc-adapter', platforms: :jruby
23
+ gem "jdbc-sqlite3", platforms: :jruby
24
+ gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
25
+ gem "activerecord-jdbcmysql-adapter", platforms: :jruby
26
+ gem "activerecord-jdbcpostgresql-adapter", platforms: :jruby
27
+ gem "activerecord-jdbcmssql-adapter", platforms: :jruby
28
+ end
29
+
30
+ gemspec path: "../"
@@ -0,0 +1,28 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "arel_extensions/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "arel_extensions"
6
+ s.version = ArelExtensions::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Yann Azoury", "Félix Bellanger", "Julien Delporte"]
9
+ s.email = ["yann.azoury@faveod.com", "felix.bellanger@faveod.com", "julien.delporte@faveod.com"]
10
+ s.homepage = "https://github.com/Faveod/arel-extensions"
11
+ s.description = "Adds new features to Arel"
12
+ s.summary = "Extending Arel"
13
+ s.license = 'MIT'
14
+
15
+ s.rdoc_options = ["--main", "README.md"]
16
+ s.extra_rdoc_files = ["MIT-LICENSE.txt", "README.md", 'functions.html']
17
+
18
+ # Manifest
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_dependency('arel', '>= 6.0')
24
+
25
+ s.add_development_dependency('minitest', '~> 5.9')
26
+ s.add_development_dependency('rdoc', '~> 4.0')
27
+ s.add_development_dependency('rake', '~> 12.3.3')
28
+ end
@@ -1,14 +1,15 @@
1
1
 
2
- gem uninstall arel_extensions
2
+ #gem uninstall arel_extensions
3
3
 
4
4
  # VERSION ~> 1
5
5
  cp ./version_v1.rb lib/arel_extensions/version.rb
6
+ cp ./gemspecs/arel_extensions-v1.gemspec ./arel_extensions.gemspec
6
7
  gem build ./arel_extensions.gemspec
7
8
 
8
9
  # VERSION ~> 2
9
10
  cp ./version_v2.rb lib/arel_extensions/version.rb
10
11
  mv ./arel_extensions.gemspec ./arel_extensions.gemspec.bck
11
- cp ./gemspec_v2/arel_extensions-v2.gemspec ./arel_extensions.gemspec
12
+ cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
12
13
  gem build ./arel_extensions.gemspec
13
14
  cp ./version_v1.rb lib/arel_extensions/version.rb
14
- cp ./arel_extensions.gemspec.bck ./arel_extensions.gemspec
15
+ cp ./gemspecs/arel_extensions-v1.gemspec ./arel_extensions.gemspec
@@ -16,8 +16,10 @@ class Arel::Nodes::Casted
16
16
  include Arel::AliasPredication
17
17
 
18
18
  # They forget to define hash.
19
- def hash
20
- [self.class, self.val, self.attribute].hash
19
+ if Gem::Version.new(Arel::VERSION) < Gem::Version.new("10.0.0")
20
+ def hash
21
+ [self.class, self.val, self.attribute].hash
22
+ end
21
23
  end
22
24
  end
23
25
 
@@ -63,15 +63,15 @@ module ArelExtensions
63
63
 
64
64
  # Aggregate Functions
65
65
  def std opts = {unbiased: true}
66
- ArelExtensions::Nodes::Std.new self, opts
66
+ ArelExtensions::Nodes::Std.new self, **opts
67
67
  end
68
68
 
69
69
  def variance opts = {unbiased: true}
70
- ArelExtensions::Nodes::Variance.new self, opts
70
+ ArelExtensions::Nodes::Variance.new self, **opts
71
71
  end
72
72
 
73
73
  def sum opts = {unbiased: true}
74
- ArelExtensions::Nodes::Sum.new self, opts
74
+ ArelExtensions::Nodes::Sum.new self, **opts
75
75
  end
76
76
 
77
77
  # function that can be invoked to produce random numbers between 0 and 1
@@ -46,7 +46,7 @@ module ArelExtensions::Nodes
46
46
 
47
47
  def initialize node, separator = ', ', **opts
48
48
  @separator = convert_to_node(separator)
49
- super node, opts
49
+ super node, **opts
50
50
  end
51
51
  end
52
52
  end
@@ -4,9 +4,9 @@ module ArelExtensions
4
4
  RETURN_TYPE = :number
5
5
  attr_accessor :unbiased_estimator
6
6
 
7
- def initialize node, opts = {}
7
+ def initialize node, **opts
8
8
  @unbiased_estimator = opts[:unbiased] ? true : false
9
- super node, opts
9
+ super node, **opts
10
10
  end
11
11
  end
12
12
 
@@ -14,9 +14,9 @@ module ArelExtensions
14
14
  RETURN_TYPE = :number
15
15
  attr_accessor :unbiased_estimator
16
16
 
17
- def initialize node, opts = {}
17
+ def initialize node, **opts
18
18
  @unbiased_estimator = opts[:unbiased] ? true : false
19
- super node, opts
19
+ super node, **opts
20
20
  end
21
21
  end
22
22
  end
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "1.2.18".freeze
2
+ VERSION = "1.2.19".freeze
3
3
  end
@@ -3,6 +3,15 @@ module ArelExtensions
3
3
  class Arel::Visitors::ToSql
4
4
  COMMA = ', ' unless defined?(COMMA)
5
5
 
6
+ # Escape properly the string expression expr.
7
+ # Take care of escaping.
8
+ def make_json_string expr
9
+ Arel::Nodes.build_quoted('"') \
10
+ + expr
11
+ .replace('\\','\\\\').replace('"','\"').replace("\n", '\n') \
12
+ + '"'
13
+ end
14
+
6
15
  # Math Functions
7
16
  def visit_ArelExtensions_Nodes_Abs o, collector
8
17
  collector << "ABS("
@@ -589,7 +598,7 @@ module ArelExtensions
589
598
  def json_value(o,v)
590
599
  case o.type_of_node(v)
591
600
  when :string
592
- Arel.when(v.is_null).then(Arel::Nodes.build_quoted("null")).else(Arel::Nodes.build_quoted('"') + v.replace('\\','\\\\').replace('"','\"') + '"')
601
+ Arel.when(v.is_null).then(Arel::Nodes.build_quoted("null")).else(make_json_string(v))
593
602
  when :date
594
603
  s = v.format('%Y-%m-%d')
595
604
  Arel.when(s.is_null).then(Arel::Nodes.build_quoted("null")).else(Arel::Nodes.build_quoted('"') + s + '"')
@@ -624,7 +633,7 @@ module ArelExtensions
624
633
  if i != 0
625
634
  res += ', '
626
635
  end
627
- res += Arel::Nodes.build_quoted('"') + ArelExtensions::Nodes::Cast.new([k, :string]).coalesce("").replace('\\','\\\\').replace('"','\"') + '": '
636
+ res += make_json_string(ArelExtensions::Nodes::Cast.new([k, :string]).coalesce("")) + ': '
628
637
  res += json_value(o,v)
629
638
  end
630
639
  res += '}'
@@ -646,7 +655,7 @@ module ArelExtensions
646
655
  if i != 0
647
656
  res = res + ', '
648
657
  end
649
- kv = Arel::Nodes.build_quoted('"') + ArelExtensions::Nodes::Cast.new([k, :string]).coalesce("").replace('\\','\\\\').replace('"','\"') + '": '
658
+ kv = make_json_string(ArelExtensions::Nodes::Cast.new([k, :string]).coalesce("")) + ': '
650
659
  kv += json_value(o,v)
651
660
  res = res + kv.group_concat(', ', order: Array(orders)).coalesce('')
652
661
  end
@@ -10,6 +10,8 @@ mysql:
10
10
  adapter: mysql2
11
11
  database: arext_test
12
12
  username: travis
13
+ host: 127.0.0.1
14
+ port: 3306
13
15
  encoding: utf8
14
16
  jdbc-mysql:
15
17
  adapter: jdbcmysql
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "1.2.18".freeze
2
+ VERSION = "1.2.19".freeze
3
3
  end
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "2.0.15".freeze
2
+ VERSION = "2.0.16".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.2.18
4
+ version: 1.2.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yann Azoury
@@ -10,10 +10,10 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-12-14 00:00:00.000000000 Z
13
+ date: 2021-01-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: activerecord
16
+ name: arel
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ">="
@@ -81,6 +81,7 @@ extra_rdoc_files:
81
81
  - functions.html
82
82
  files:
83
83
  - ".codeclimate.yml"
84
+ - ".github/workflows/ruby.yml"
84
85
  - ".gitignore"
85
86
  - ".rubocop.yml"
86
87
  - ".travis.yml"
@@ -105,7 +106,9 @@ files:
105
106
  - gemfiles/rails5_1_4.gemfile
106
107
  - gemfiles/rails5_2.gemfile
107
108
  - gemfiles/rails6.gemfile
108
- - gemspec_v2/arel_extensions-v2.gemspec
109
+ - gemfiles/rails6_1.gemfile
110
+ - gemspecs/arel_extensions-v1.gemspec
111
+ - gemspecs/arel_extensions-v2.gemspec
109
112
  - generate_gems.sh
110
113
  - init/mssql.sql
111
114
  - init/mysql.sql
@@ -219,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
222
  - !ruby/object:Gem::Version
220
223
  version: '0'
221
224
  requirements: []
222
- rubygems_version: 3.0.2
225
+ rubygems_version: 3.0.6
223
226
  signing_key:
224
227
  specification_version: 4
225
228
  summary: Extending Arel