arel-is-blank 1.0.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 +7 -0
- data/.gitignore +6 -0
- data/.travis.yml +10 -0
- data/Appraisals +10 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +35 -0
- data/README.md +37 -0
- data/Rakefile +8 -0
- data/arel-is-blank.gemspec +26 -0
- data/gemfiles/arel_6.x.gemfile +7 -0
- data/gemfiles/arel_6.x.gemfile.lock +36 -0
- data/gemfiles/arel_8.x.gemfile +7 -0
- data/gemfiles/arel_8.x.gemfile.lock +36 -0
- data/lib/arel-is-blank.rb +24 -0
- data/lib/arel-is-blank/version.rb +6 -0
- data/test/test-arel-is-blank.rb +45 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c442c9cfac67f5cdc45310e68d16b773abb5dda9
|
4
|
+
data.tar.gz: 8cf1650fbb9544e90c436d9793e52f10620eb8c1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2fb34c4388285d49e8a6c353b2a999e986d6332605d4a5f3fe0ef6f0f34f53656a0349cbd969368d37c5598bdf20e078ee77bb67ef999a1f716fb25999f60c76
|
7
|
+
data.tar.gz: 0d8246957c8bf064b29c3cd4d1c34bc9879883246405d7344392b4246ba5d24cf63303b6cf23d875d2b3c7dc78577db4ae8039ebce5ebe39351f0ce075e7c1ef
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Appraisals
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
arel-is-blank (1.0.0)
|
5
|
+
arel (>= 6.0)
|
6
|
+
arel-to-sql (~> 1.0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
appraisal (2.1.0)
|
12
|
+
bundler
|
13
|
+
rake
|
14
|
+
thor (>= 0.14.0)
|
15
|
+
arel (8.0.0)
|
16
|
+
arel-to-sql (1.0.0)
|
17
|
+
arel (>= 6.0)
|
18
|
+
power_assert (1.0.1)
|
19
|
+
rake (12.0.0)
|
20
|
+
test-unit (3.2.3)
|
21
|
+
power_assert
|
22
|
+
thor (0.19.4)
|
23
|
+
|
24
|
+
PLATFORMS
|
25
|
+
ruby
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
appraisal (~> 2.1)
|
29
|
+
arel-is-blank!
|
30
|
+
bundler (~> 1.7)
|
31
|
+
rake (~> 12.0)
|
32
|
+
test-unit (~> 3.2)
|
33
|
+
|
34
|
+
BUNDLED WITH
|
35
|
+
1.14.3
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
## Adds several methods which help to build conditions around value presence.
|
2
|
+
|
3
|
+
[](https://badge.fury.io/rb/arel-is-blank)
|
4
|
+
[](https://travis-ci.org/yivo/arel-is-blank)
|
5
|
+
|
6
|
+
## About
|
7
|
+
`Àrel::Attributes::Attribute` receives several methods which help to build conditions around value presence.
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
```ruby
|
11
|
+
# Get posts with detailed description.
|
12
|
+
t = Post.arel_table
|
13
|
+
posts = Post.where(t[:detailed_description].is_not_blank)
|
14
|
+
# SELECT * FROM `posts` WHERE (`posts`.`detailed_description` IS NOT NULL AND `posts`.`detailed_description` <> '')
|
15
|
+
```
|
16
|
+
|
17
|
+
## Installing gem
|
18
|
+
Add to your Gemfile:
|
19
|
+
```ruby
|
20
|
+
gem 'arel-is-blank', '~> 1.0'
|
21
|
+
```
|
22
|
+
|
23
|
+
## Running Tests
|
24
|
+
Install bundler:
|
25
|
+
```bash
|
26
|
+
gem install bundler
|
27
|
+
```
|
28
|
+
|
29
|
+
Install dependencies:
|
30
|
+
```bash
|
31
|
+
cd arel-is-blank && bundle
|
32
|
+
```
|
33
|
+
|
34
|
+
Run tests:
|
35
|
+
```bash
|
36
|
+
cd arel-is-blank && appraisal rake test
|
37
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require File.expand_path('../lib/arel-is-blank/version', __FILE__)
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = 'arel-is-blank'
|
8
|
+
s.version = ArelIsBlank::VERSION
|
9
|
+
s.author = 'Yaroslav Konoplov'
|
10
|
+
s.email = 'eahome00@gmail.com'
|
11
|
+
s.summary = 'Adds is_blank to arel attribute.'
|
12
|
+
s.description = 'Adds is_blank to arel attribute.'
|
13
|
+
s.homepage = 'https://github.com/yivo/arel-is-blank'
|
14
|
+
s.license = 'MIT'
|
15
|
+
|
16
|
+
s.files = `git ls-files -z`.split("\x0")
|
17
|
+
s.test_files = `git ls-files -z -- {test,spec,features}/*`.split("\x0")
|
18
|
+
s.require_paths = ['lib']
|
19
|
+
|
20
|
+
s.add_dependency 'arel', '>= 6.0'
|
21
|
+
s.add_dependency 'arel-to-sql', '~> 1.0'
|
22
|
+
s.add_development_dependency 'rake', '~> 12.0'
|
23
|
+
s.add_development_dependency 'test-unit', '~> 3.2'
|
24
|
+
s.add_development_dependency 'bundler', '~> 1.7'
|
25
|
+
s.add_development_dependency 'appraisal', '~> 2.1'
|
26
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
arel-is-blank (1.0.0)
|
5
|
+
arel (>= 6.0)
|
6
|
+
arel-to-sql (~> 1.0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
appraisal (2.1.0)
|
12
|
+
bundler
|
13
|
+
rake
|
14
|
+
thor (>= 0.14.0)
|
15
|
+
arel (6.0.4)
|
16
|
+
arel-to-sql (1.0.0)
|
17
|
+
arel (>= 6.0)
|
18
|
+
power_assert (1.0.1)
|
19
|
+
rake (12.0.0)
|
20
|
+
test-unit (3.2.3)
|
21
|
+
power_assert
|
22
|
+
thor (0.19.4)
|
23
|
+
|
24
|
+
PLATFORMS
|
25
|
+
ruby
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
appraisal (~> 2.1)
|
29
|
+
arel (~> 6.0)
|
30
|
+
arel-is-blank!
|
31
|
+
bundler (~> 1.7)
|
32
|
+
rake (~> 12.0)
|
33
|
+
test-unit (~> 3.2)
|
34
|
+
|
35
|
+
BUNDLED WITH
|
36
|
+
1.14.3
|
@@ -0,0 +1,36 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
arel-is-blank (1.0.0)
|
5
|
+
arel (>= 6.0)
|
6
|
+
arel-to-sql (~> 1.0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
appraisal (2.1.0)
|
12
|
+
bundler
|
13
|
+
rake
|
14
|
+
thor (>= 0.14.0)
|
15
|
+
arel (8.0.0)
|
16
|
+
arel-to-sql (1.0.0)
|
17
|
+
arel (>= 6.0)
|
18
|
+
power_assert (1.0.1)
|
19
|
+
rake (12.0.0)
|
20
|
+
test-unit (3.2.3)
|
21
|
+
power_assert
|
22
|
+
thor (0.19.4)
|
23
|
+
|
24
|
+
PLATFORMS
|
25
|
+
ruby
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
appraisal (~> 2.1)
|
29
|
+
arel (~> 8.0)
|
30
|
+
arel-is-blank!
|
31
|
+
bundler (~> 1.7)
|
32
|
+
rake (~> 12.0)
|
33
|
+
test-unit (~> 3.2)
|
34
|
+
|
35
|
+
BUNDLED WITH
|
36
|
+
1.14.3
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module ArelIsBlank
|
5
|
+
module Extension
|
6
|
+
def is_blank
|
7
|
+
"(#{to_sql} IS NULL OR #{to_sql} = '')"
|
8
|
+
end
|
9
|
+
|
10
|
+
def is_not_blank
|
11
|
+
"(#{to_sql} IS NOT NULL AND #{to_sql} <> '')"
|
12
|
+
end
|
13
|
+
|
14
|
+
def is_blank_or_equals(value)
|
15
|
+
engine = relation.respond_to?(:engine) ? relation.engine : Arel::Table.engine
|
16
|
+
"(#{to_sql} = #{engine.connection.quote(value)} OR #{is_blank})"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'arel'
|
22
|
+
require 'arel-to-sql'
|
23
|
+
|
24
|
+
Arel::Attributes::Attribute.include ArelIsBlank::Extension
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'bundler'
|
5
|
+
Bundler.require :default, :development, :test
|
6
|
+
|
7
|
+
class FakeRecord
|
8
|
+
class Connection
|
9
|
+
def quote_table_name(name)
|
10
|
+
"`#{name}`"
|
11
|
+
end
|
12
|
+
|
13
|
+
def quote_column_name(name)
|
14
|
+
"`#{name}`"
|
15
|
+
end
|
16
|
+
|
17
|
+
def quote(value)
|
18
|
+
String === value ? "'#{value}'" : value
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class << self
|
23
|
+
attr_accessor :connection
|
24
|
+
end
|
25
|
+
|
26
|
+
self.connection = Connection.new
|
27
|
+
end
|
28
|
+
|
29
|
+
class ArelToSQLTest < Test::Unit::TestCase
|
30
|
+
def test_is_blank
|
31
|
+
table = Arel::Table.new(:users)
|
32
|
+
assert_equal "(`users`.`name` IS NULL OR `users`.`name` = '')", table[:name].is_blank
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_is_blank_or_equals
|
36
|
+
table = Arel::Table.new(:users)
|
37
|
+
assert_equal "(`users`.`name` = 'Anonymous' OR (`users`.`name` IS NULL OR `users`.`name` = ''))",
|
38
|
+
table[:name].is_blank_or_equals('Anonymous')
|
39
|
+
end
|
40
|
+
|
41
|
+
def setup
|
42
|
+
super
|
43
|
+
Arel::Table.engine = FakeRecord
|
44
|
+
end
|
45
|
+
end
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: arel-is-blank
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yaroslav Konoplov
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-03-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: arel
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '6.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '6.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: arel-to-sql
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '12.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '12.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: test-unit
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.2'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.7'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.7'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: appraisal
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.1'
|
97
|
+
description: Adds is_blank to arel attribute.
|
98
|
+
email: eahome00@gmail.com
|
99
|
+
executables: []
|
100
|
+
extensions: []
|
101
|
+
extra_rdoc_files: []
|
102
|
+
files:
|
103
|
+
- ".gitignore"
|
104
|
+
- ".travis.yml"
|
105
|
+
- Appraisals
|
106
|
+
- Gemfile
|
107
|
+
- Gemfile.lock
|
108
|
+
- README.md
|
109
|
+
- Rakefile
|
110
|
+
- arel-is-blank.gemspec
|
111
|
+
- gemfiles/arel_6.x.gemfile
|
112
|
+
- gemfiles/arel_6.x.gemfile.lock
|
113
|
+
- gemfiles/arel_8.x.gemfile
|
114
|
+
- gemfiles/arel_8.x.gemfile.lock
|
115
|
+
- lib/arel-is-blank.rb
|
116
|
+
- lib/arel-is-blank/version.rb
|
117
|
+
- test/test-arel-is-blank.rb
|
118
|
+
homepage: https://github.com/yivo/arel-is-blank
|
119
|
+
licenses:
|
120
|
+
- MIT
|
121
|
+
metadata: {}
|
122
|
+
post_install_message:
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
125
|
+
- lib
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 2.6.8
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: Adds is_blank to arel attribute.
|
142
|
+
test_files:
|
143
|
+
- test/test-arel-is-blank.rb
|