arel_extensions 0.8.6 → 0.8.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +7 -2
- data/README.md +15 -3
- data/TODO +26 -0
- data/appveyor.yml +43 -0
- data/arel_extensions.gemspec +2 -2
- data/gemfiles/rails4.gemfile +7 -4
- data/gemfiles/rails5.gemfile +7 -4
- data/lib/arel_extensions/nodes/blank.rb +11 -0
- data/lib/arel_extensions/nodes/trim.rb +7 -0
- data/lib/arel_extensions/string_functions.rb +8 -5
- data/lib/arel_extensions/version.rb +1 -1
- data/lib/arel_extensions/visitors/mssql.rb +17 -33
- data/lib/arel_extensions/visitors/oracle.rb +21 -10
- data/lib/arel_extensions/visitors/to_sql.rb +7 -0
- data/test/database.yml +8 -1
- data/test/with_ar/all_agnostic_test.rb +17 -1
- metadata +7 -6
- data/lib/arel_extensions/nodes/ltrim.rb +0 -18
- data/lib/arel_extensions/nodes/rtrim.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8d7cc16253e73e976d81b8beb558c2041c2915f
|
4
|
+
data.tar.gz: 7ff4c6640d063ef79b6ada768ae7b57cb9bf4dd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b2748e84a31a944bc2a835036ff81be4528d3a85940ea34ee6d65389bf86c5c67230ec7dea7c726375395733da138cfd80920463475a54c4e97abc024f3cd76
|
7
|
+
data.tar.gz: 7779b7ef80ab54c3f08e1bf3016d0e9311393576f18be74d5795d7e86d8fc1390afaf12f6d9271cb47e0a5a6e57e947eafb204d9a06ddae5ae9dae04bf278c9f
|
data/Gemfile
CHANGED
@@ -3,13 +3,18 @@ source "https://rubygems.org"
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :test do
|
6
|
-
gem "sqlite3", :platforms => [:
|
7
|
-
gem "mysql2", :platforms => [:
|
6
|
+
gem "sqlite3", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
7
|
+
gem "mysql2", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
8
|
+
gem "pg", :platforms => [:mri, :mingw, :x64_mingw]
|
9
|
+
|
8
10
|
gem "jdbc-sqlite3", :platforms => :jruby
|
9
11
|
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
|
10
12
|
gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
|
11
13
|
gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
|
12
14
|
|
15
|
+
gem "tiny_tds", :platforms => [:mri, :mingw, :x64_mingw]
|
16
|
+
gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw, :x64_mingw]
|
17
|
+
|
13
18
|
gem 'activesupport', '~> 4.0'
|
14
19
|
gem 'activemodel', '~> 4.0'
|
15
20
|
gem 'activerecord', '~> 4.0'
|
data/README.md
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# Arel Extensions
|
2
2
|
|
3
3
|
[![Build Status](https://secure.travis-ci.org/Faveod/arel-extensions.svg)](http://travis-ci.org/Faveod/arel-extensions)
|
4
|
-
|
4
|
+
[![Latest Release](https://img.shields.io/gem/v/arel_extensions.svg)](https://rubygems.org/gems/arel_extensions)
|
5
|
+
![](http://img.shields.io/badge/license-MIT-brightgreen.svg)
|
6
|
+
![](https://ruby-gem-downloads-badge.herokuapp.com/arel_extensions?type=total)
|
7
|
+
![](https://ruby-gem-downloads-badge.herokuapp.com/arel_extensions?label=downloads-current-version)
|
5
8
|
|
6
9
|
Arel Extensions adds shortcuts, fixes and new ORM mappings (ruby to SQL) to Arel.
|
7
10
|
It aims to ensure pure ruby syntax for the biggest number of usual cases.
|
@@ -29,6 +32,9 @@ t is an Arel::Table for table my_table
|
|
29
32
|
# => my_table.nb > 42
|
30
33
|
```
|
31
34
|
|
35
|
+
Other operators : <, >=, <=, =~
|
36
|
+
|
37
|
+
|
32
38
|
## Maths
|
33
39
|
|
34
40
|
Currently in Arel:
|
@@ -57,8 +63,11 @@ Other functions : ABS, RAND, ROUND, FLOOR, CEIL, FORMAT
|
|
57
63
|
(t[:name] + ' append').to_sql
|
58
64
|
# => CONCAT(my_table.name, ' append')
|
59
65
|
|
60
|
-
(t[:name].
|
61
|
-
# =>
|
66
|
+
(t[:name].coalesce('default')).to_sql
|
67
|
+
# => COALESCE(my_table.name, 'default')
|
68
|
+
|
69
|
+
(t[:name].blank).to_sql
|
70
|
+
# => TRIM(TRIM(TRIM(COALESCE(my_table.name, '')), '\t'), '\n') = ''
|
62
71
|
|
63
72
|
(t[:name] =~ /\A[a-d_]+/).to_sql
|
64
73
|
# => my_table.name REGEXP '\^[a-d_]+'
|
@@ -96,6 +105,9 @@ t[:birthdate].month.to_sql
|
|
96
105
|
|
97
106
|
t[:birthdate].year.to_sql
|
98
107
|
# => YEAR(my_table.birthdate)
|
108
|
+
|
109
|
+
t[:birthdate].format('%Y-%m-%d').to_sql
|
110
|
+
# => DATE_FORMAT(my_table.birthdate, '%Y-%m-%d')
|
99
111
|
```
|
100
112
|
|
101
113
|
## Unions (in next version)
|
data/TODO
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Code quality:
|
2
|
+
- codeclimate.com
|
3
|
+
- coveralls.io
|
4
|
+
- gemnasium
|
5
|
+
- inch-ci.org
|
6
|
+
- appveyor.com (windows)
|
7
|
+
- hakiri.io
|
8
|
+
|
9
|
+
[![Gem Version](https://img.shields.io/gem/v/arel_extensions.svg)][gem]
|
10
|
+
[![Build Status](https://img.shields.io/travis/faveod/arel_extensions.svg)][travis]
|
11
|
+
[![Dependency Status](https://img.shields.io/gemnasium/faveod/arel_extensions.svg)][https://gemnasium.com/faveod/arel_extensions]
|
12
|
+
[![Code Climate](https://img.shields.io/codeclimate/github/faveod/arel_extensions.svg)][https://codeclimate.com/github/faveod/arel_extensions]
|
13
|
+
[![Coverage Status](https://img.shields.io/coveralls/faveod/arel_extensions.svg)][https://coveralls.io/r/faveod/arel_extensions]
|
14
|
+
[![Inline docs](http://inch-ci.org/github/faveod/arel_extensions.svg)][https://inch-ci.org/github/faveod/https://gemnasium.com/faveod/arel_extensions]
|
15
|
+
[![security](https://hakiri.io/github/faveod/arel_extensions/master.svg)](https://hakiri.io/github/faveod/arel_extensions/master)
|
16
|
+
[![codebeat](https://codebeat.co/badges/<change>)](https://codebeat.co/projects/github-com-faveod-arel_extensions)
|
17
|
+
|
18
|
+
|
19
|
+
New features:
|
20
|
+
- POSIX format numbers (%.2f)
|
21
|
+
- easy unions
|
22
|
+
- cast
|
23
|
+
|
24
|
+
Tests improvements:
|
25
|
+
- SQL Server
|
26
|
+
- DB2
|
data/appveyor.yml
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
version: "{build}"
|
2
|
+
|
3
|
+
cache:
|
4
|
+
- vendor/bundle
|
5
|
+
|
6
|
+
branches:
|
7
|
+
only:
|
8
|
+
- master
|
9
|
+
|
10
|
+
services:
|
11
|
+
- mssql2014
|
12
|
+
|
13
|
+
|
14
|
+
install:
|
15
|
+
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
|
16
|
+
- bundle config --local path vendor/bundle
|
17
|
+
- bundle install
|
18
|
+
|
19
|
+
# Disable normal Windows builds in favor of our test script.
|
20
|
+
build: off
|
21
|
+
|
22
|
+
|
23
|
+
before_test:
|
24
|
+
- ruby -v
|
25
|
+
- gem -v
|
26
|
+
- bundle -v
|
27
|
+
|
28
|
+
test_script:
|
29
|
+
- ruby --version
|
30
|
+
- gem --version
|
31
|
+
- bundler --version
|
32
|
+
- bundle exec rake test
|
33
|
+
- ps: Start-Service 'MSSQL$SQL2014'
|
34
|
+
- timeout /t 4 /nobreak > NUL
|
35
|
+
- bundle exec rake test:mssql
|
36
|
+
|
37
|
+
environment:
|
38
|
+
matrix:
|
39
|
+
- RUBY_VERSION: 200
|
40
|
+
- RUBY_VERSION: 21
|
41
|
+
- RUBY_VERSION: 22
|
42
|
+
- RUBY_VERSION: 23
|
43
|
+
- RUBY_VERSION: "23-x64"
|
data/arel_extensions.gemspec
CHANGED
@@ -4,7 +4,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "arel_extensions"
|
7
|
-
s.version = '0.8.
|
7
|
+
s.version = '0.8.7'
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Yann Azoury", "Mathilde Pechdimaldjian", "Félix Bellanger"]
|
10
10
|
s.email = ["yann.azoury@faveod.com", "mathilde.pechdimaldjian@gmail.com", "felix.bellanger@faveod.com"]
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
22
22
|
s.require_paths = ["lib"]
|
23
23
|
|
24
|
-
s.add_dependency('arel', '
|
24
|
+
s.add_dependency('arel', '~> 6.0')
|
25
25
|
|
26
26
|
s.add_development_dependency('minitest', '~> 5.9')
|
27
27
|
s.add_development_dependency('rdoc', '~> 4.0')
|
data/gemfiles/rails4.gemfile
CHANGED
@@ -7,11 +7,14 @@ group :development, :test do
|
|
7
7
|
gem 'activemodel', '~> 4.0'
|
8
8
|
gem 'activerecord', '~> 4.0'
|
9
9
|
|
10
|
-
gem "sqlite3", :platforms => [:
|
11
|
-
gem "mysql2", :platforms => [:
|
12
|
-
|
10
|
+
gem "sqlite3", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
11
|
+
gem "mysql2", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
12
|
+
gem "pg", :platforms => [:mri, :mingw, :x64_mingw]
|
13
13
|
|
14
|
-
|
14
|
+
gem "tiny_tds", :platforms => [:mri, :mingw, :x64_mingw]
|
15
|
+
gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw, :x64_mingw]
|
16
|
+
|
17
|
+
gem 'ruby-oci8', :platforms => [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
|
15
18
|
gem 'activerecord-oracle_enhanced-adapter', '~> 1.6.0' if ENV.has_key? 'ORACLE_HOME'
|
16
19
|
|
17
20
|
# for JRuby
|
data/gemfiles/rails5.gemfile
CHANGED
@@ -7,11 +7,14 @@ group :development, :test do
|
|
7
7
|
gem 'activemodel', '~> 5'
|
8
8
|
gem 'activerecord', '~> 5'
|
9
9
|
|
10
|
-
gem "sqlite3", :platforms => [:
|
11
|
-
gem "mysql2", :platforms => [:
|
12
|
-
|
10
|
+
gem "sqlite3", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
11
|
+
gem "mysql2", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
12
|
+
gem "pg", :platforms => [:mri, :mingw, :x64_mingw]
|
13
13
|
|
14
|
-
|
14
|
+
gem "tiny_tds", :platforms => [:mri, :mingw, :x64_mingw]
|
15
|
+
# gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw, :x64_mingw]
|
16
|
+
|
17
|
+
gem 'ruby-oci8', :platforms => [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
|
15
18
|
gem 'activerecord-oracle_enhanced-adapter', '~> 1.7.0' if ENV.has_key? 'ORACLE_HOME'
|
16
19
|
|
17
20
|
# for JRuby
|
@@ -6,8 +6,7 @@ require 'arel_extensions/nodes/find_in_set'
|
|
6
6
|
require 'arel_extensions/nodes/replace'
|
7
7
|
require 'arel_extensions/nodes/soundex'
|
8
8
|
require 'arel_extensions/nodes/trim'
|
9
|
-
require 'arel_extensions/nodes/
|
10
|
-
require 'arel_extensions/nodes/rtrim'
|
9
|
+
require 'arel_extensions/nodes/blank'
|
11
10
|
require 'arel_extensions/nodes/format'
|
12
11
|
|
13
12
|
module ArelExtensions
|
@@ -68,17 +67,21 @@ module ArelExtensions
|
|
68
67
|
end
|
69
68
|
|
70
69
|
#Function returns a string after removing left, right or the both prefixes or suffixes int argument
|
71
|
-
def trim other
|
70
|
+
def trim other = ' '
|
72
71
|
ArelExtensions::Nodes::Trim.new [self, other]
|
73
72
|
end
|
74
73
|
|
75
|
-
def ltrim other
|
74
|
+
def ltrim other = ' '
|
76
75
|
ArelExtensions::Nodes::Ltrim.new [self, other]
|
77
76
|
end
|
78
77
|
|
79
|
-
def rtrim other
|
78
|
+
def rtrim other = ' '
|
80
79
|
ArelExtensions::Nodes::Rtrim.new [self, other]
|
81
80
|
end
|
82
81
|
|
82
|
+
def blank
|
83
|
+
ArelExtensions::Nodes::Blank.new [self]
|
84
|
+
end
|
85
|
+
|
83
86
|
end
|
84
87
|
end
|
@@ -30,7 +30,7 @@ module ArelExtensions
|
|
30
30
|
else
|
31
31
|
collector = visit o.left, collector
|
32
32
|
collector << " + '"
|
33
|
-
collector
|
33
|
+
collector = visit o.right, collector
|
34
34
|
collector
|
35
35
|
end
|
36
36
|
end
|
@@ -38,13 +38,8 @@ module ArelExtensions
|
|
38
38
|
def visit_ArelExtensions_Nodes_DateDiff o, collector
|
39
39
|
collector << "DATEDIFF(day,"
|
40
40
|
collector = visit o.left, collector
|
41
|
-
collector<<
|
42
|
-
|
43
|
-
collector = visit o.right, collector
|
44
|
-
else
|
45
|
-
collector<< "'#{o.right}'"
|
46
|
-
|
47
|
-
end
|
41
|
+
collector << Arel::Visitors::MSSQL::COMMA
|
42
|
+
collector = visit o.right, collector
|
48
43
|
collector << ")"
|
49
44
|
collector
|
50
45
|
end
|
@@ -62,11 +57,7 @@ module ArelExtensions
|
|
62
57
|
collector << "YEAR("
|
63
58
|
end
|
64
59
|
#visit right
|
65
|
-
|
66
|
-
collector = visit o.right, collector
|
67
|
-
else
|
68
|
-
collector << "'#{o.right}'"
|
69
|
-
end
|
60
|
+
collector = visit o.right, collector
|
70
61
|
collector << ")"
|
71
62
|
collector
|
72
63
|
end
|
@@ -82,10 +73,10 @@ module ArelExtensions
|
|
82
73
|
def visit_ArelExtensions_Nodes_Locate o, collector
|
83
74
|
collector << "CHARINDEX("
|
84
75
|
collector = visit o.val, collector
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
76
|
+
collector << Arel::Visitors::MSSQL::COMMA
|
77
|
+
collector = visit o.expr, collector
|
78
|
+
collector << ")"
|
79
|
+
collector
|
89
80
|
end
|
90
81
|
|
91
82
|
def visit_ArelExtensions_Nodes_Format o, collector
|
@@ -116,22 +107,15 @@ module ArelExtensions
|
|
116
107
|
end
|
117
108
|
|
118
109
|
def visit_ArelExtensions_Nodes_Replace o, collector
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
if(o.right.is_a?(Arel::Attributes::Attribute))
|
129
|
-
collector = visit o.right, collector
|
130
|
-
else
|
131
|
-
collector << "'#{o.right}'"
|
132
|
-
end
|
133
|
-
collector << ")"
|
134
|
-
collector
|
110
|
+
collector << "REPLACE("
|
111
|
+
collector = visit o.expr,collector
|
112
|
+
collector << Arel::Visitors::MSSQL::COMMA
|
113
|
+
collector = visit o.left, collector
|
114
|
+
|
115
|
+
collector << Arel::Visitors::MSSQL::COMMA
|
116
|
+
collector = visit o.right, collector
|
117
|
+
collector << ")"
|
118
|
+
collector
|
135
119
|
end
|
136
120
|
|
137
121
|
|
@@ -138,13 +138,6 @@ module ArelExtensions
|
|
138
138
|
collector
|
139
139
|
end
|
140
140
|
|
141
|
-
def visit_ArelExtensions_Nodes_Soundex o, collector
|
142
|
-
collector << "SOUNDEX("
|
143
|
-
collector = visit o.expr, collector
|
144
|
-
collector << ")"
|
145
|
-
collector
|
146
|
-
end
|
147
|
-
|
148
141
|
def visit_ArelExtensions_Nodes_Locate o, collector
|
149
142
|
collector << "INSTR("
|
150
143
|
o.expressions.each_with_index { |arg, i|
|
@@ -155,11 +148,22 @@ module ArelExtensions
|
|
155
148
|
collector
|
156
149
|
end
|
157
150
|
|
158
|
-
def visit_ArelExtensions_Nodes_Trim o
|
151
|
+
def visit_ArelExtensions_Nodes_Trim o, collector
|
159
152
|
collector << 'TRIM(' # BOTH
|
160
|
-
|
153
|
+
case o.right.expr
|
154
|
+
when "\t"
|
155
|
+
collector << 'CHR(9)'
|
156
|
+
when "\n"
|
157
|
+
collector << 'CHR(10)'
|
158
|
+
when "\r"
|
159
|
+
collector << 'CHR(13)'
|
160
|
+
else
|
161
|
+
collector = visit o.right, collector
|
162
|
+
end
|
161
163
|
collector << ' FROM '
|
164
|
+
collector << '(' if o.left.is_a? ArelExtensions::Nodes::Trim
|
162
165
|
collector = visit o.left, collector
|
166
|
+
collector << ')' if o.left.is_a? ArelExtensions::Nodes::Trim
|
163
167
|
collector << ")"
|
164
168
|
collector
|
165
169
|
end
|
@@ -182,6 +186,13 @@ module ArelExtensions
|
|
182
186
|
collector
|
183
187
|
end
|
184
188
|
|
189
|
+
def visit_ArelExtensions_Nodes_Blank o, collector
|
190
|
+
collector << '(CASE WHEN ('
|
191
|
+
collector = visit o.left, collector
|
192
|
+
collector << " = '') THEN 1 ELSE 0 END)"
|
193
|
+
collector
|
194
|
+
end
|
195
|
+
|
185
196
|
def visit_ArelExtensions_Nodes_DateAdd o, collector
|
186
197
|
collector << '('
|
187
198
|
collector = visit o.left, collector
|
@@ -196,7 +207,7 @@ module ArelExtensions
|
|
196
207
|
collector = visit o.left, collector
|
197
208
|
collector << Arel::Visitors::Oracle::COMMA
|
198
209
|
|
199
|
-
f = o.iso_format.
|
210
|
+
f = o.iso_format.gsub(/\ (\w+)/, ' "\1"')
|
200
211
|
Arel::Visitors::Oracle::DATE_FORMAT_DIRECTIVES.each { |d, r| f.gsub!(d, r) }
|
201
212
|
collector = visit Arel::Nodes.build_quoted(f), collector
|
202
213
|
|
@@ -152,6 +152,13 @@ module ArelExtensions
|
|
152
152
|
collector
|
153
153
|
end
|
154
154
|
|
155
|
+
def visit_ArelExtensions_Nodes_Blank o, collector
|
156
|
+
collector << '('
|
157
|
+
collector = visit o.left, collector
|
158
|
+
collector << " = '')"
|
159
|
+
collector
|
160
|
+
end
|
161
|
+
|
155
162
|
def visit_ArelExtensions_Nodes_Format o, collector
|
156
163
|
case o.col_type
|
157
164
|
when :date, :datetime
|
data/test/database.yml
CHANGED
@@ -37,4 +37,11 @@ jdbc-oracle:
|
|
37
37
|
ibm_db:
|
38
38
|
adapter: ibm_db
|
39
39
|
username: travis
|
40
|
-
database: arext_test
|
40
|
+
database: arext_test
|
41
|
+
mssql:
|
42
|
+
adapter: sqlserver
|
43
|
+
host: localhost
|
44
|
+
dataserver: localhost\SQL2014
|
45
|
+
database: master
|
46
|
+
username: sa
|
47
|
+
password: Password12!
|
@@ -212,13 +212,29 @@ module ArelExtensions
|
|
212
212
|
end
|
213
213
|
|
214
214
|
def test_trim
|
215
|
+
assert_equal "Myung", t(@myung, @name.trim)
|
215
216
|
assert_equal "Myun", t(@myung, @name.rtrim("g"))
|
216
217
|
assert_equal "yung", t(@myung, @name.ltrim("M"))
|
218
|
+
assert_equal "Myung", t(@myung, @name.trim.ltrim.rtrim)
|
217
219
|
assert_equal "yung", t(@myung, (@name + "M").trim("M"))
|
218
220
|
skip "Oracle does not accept multi char trim" if @env_db == 'oracle'
|
219
221
|
assert_equal "", t(@myung, @name.rtrim(@name))
|
220
222
|
end
|
221
223
|
|
224
|
+
def test_blank
|
225
|
+
if @env_db == 'postgresql'
|
226
|
+
assert_includes [false, 'f'], t(@myung, @name.blank) # depends of adapter
|
227
|
+
else
|
228
|
+
assert_equal 0, t(@myung, @name.blank)
|
229
|
+
end
|
230
|
+
skip "Oracle requires cast for CLOB" if @env_db == 'oracle' # comments is CLOB, CHAR expected
|
231
|
+
if @env_db == 'postgresql'
|
232
|
+
assert_includes [true, 't'], t(@myung, @comments.blank) # depends of adapter
|
233
|
+
else
|
234
|
+
assert_equal 1, t(@myung, @comments.blank)
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
222
238
|
def test_format
|
223
239
|
assert_equal '2016-05-23', t(@lucas, @created_at.format('%Y-%m-%d'))
|
224
240
|
assert_equal '2014/03/03 12:42:00', t(@lucas, @updated_at.format('%Y/%m/%d %H:%M:%S'))
|
@@ -311,7 +327,7 @@ module ArelExtensions
|
|
311
327
|
|
312
328
|
def test_wday
|
313
329
|
d = Date.new(2016, 6, 26)
|
314
|
-
assert_equal
|
330
|
+
assert_equal(@env_db == 'oracle' ? 2 : 1, t(@myung, @created_at.wday).to_i) # monday
|
315
331
|
assert_equal 0, User.select(d.wday).as("res").first.to_i
|
316
332
|
end
|
317
333
|
|
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: 0.8.
|
4
|
+
version: 0.8.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yann Azoury
|
@@ -10,20 +10,20 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-09-
|
13
|
+
date: 2016-09-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: arel
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '6.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - "
|
26
|
+
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '6.0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
@@ -90,6 +90,8 @@ files:
|
|
90
90
|
- MIT-LICENSE.txt
|
91
91
|
- README.md
|
92
92
|
- Rakefile
|
93
|
+
- TODO
|
94
|
+
- appveyor.yml
|
93
95
|
- arel_extensions.gemspec
|
94
96
|
- functions.html
|
95
97
|
- gemfiles/rails3.gemfile
|
@@ -110,6 +112,7 @@ files:
|
|
110
112
|
- lib/arel_extensions/math_functions.rb
|
111
113
|
- lib/arel_extensions/nodes.rb
|
112
114
|
- lib/arel_extensions/nodes/abs.rb
|
115
|
+
- lib/arel_extensions/nodes/blank.rb
|
113
116
|
- lib/arel_extensions/nodes/ceil.rb
|
114
117
|
- lib/arel_extensions/nodes/coalesce.rb
|
115
118
|
- lib/arel_extensions/nodes/concat.rb
|
@@ -122,12 +125,10 @@ files:
|
|
122
125
|
- lib/arel_extensions/nodes/is_null.rb
|
123
126
|
- lib/arel_extensions/nodes/length.rb
|
124
127
|
- lib/arel_extensions/nodes/locate.rb
|
125
|
-
- lib/arel_extensions/nodes/ltrim.rb
|
126
128
|
- lib/arel_extensions/nodes/matches.rb
|
127
129
|
- lib/arel_extensions/nodes/rand.rb
|
128
130
|
- lib/arel_extensions/nodes/replace.rb
|
129
131
|
- lib/arel_extensions/nodes/round.rb
|
130
|
-
- lib/arel_extensions/nodes/rtrim.rb
|
131
132
|
- lib/arel_extensions/nodes/soundex.rb
|
132
133
|
- lib/arel_extensions/nodes/trim.rb
|
133
134
|
- lib/arel_extensions/nodes/wday.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module ArelExtensions
|
2
|
-
module Nodes
|
3
|
-
class Ltrim < Function
|
4
|
-
|
5
|
-
def initialize expr
|
6
|
-
tab = expr.map { |arg|
|
7
|
-
convert_to_node(arg)
|
8
|
-
}
|
9
|
-
return super(tab)
|
10
|
-
end
|
11
|
-
|
12
|
-
def +(other)
|
13
|
-
return ArelExtensions::Nodes::Concat.new(self.expressions + [other])
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module ArelExtensions
|
2
|
-
module Nodes
|
3
|
-
class Rtrim < Function
|
4
|
-
|
5
|
-
def initialize expr
|
6
|
-
tab = expr.map { |arg|
|
7
|
-
convert_to_node(arg)
|
8
|
-
}
|
9
|
-
return super(tab)
|
10
|
-
end
|
11
|
-
|
12
|
-
def +(other)
|
13
|
-
return ArelExtensions::Nodes::Concat.new(self.expressions + [other])
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|