ransack-enum 0.1.0 → 0.3.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 +4 -4
- data/.gitignore +0 -1
- data/.rspec +3 -0
- data/.rubocop.yml +2 -11
- data/CHANGELOG.md +22 -0
- data/Gemfile +7 -1
- data/README.md +23 -5
- data/lib/ransack/enum.rb +5 -3
- data/lib/ransack/enum/adapters/active_record.rb +0 -10
- data/lib/ransack/enum/adapters/active_record/base.rb +20 -29
- data/lib/ransack/enum/configuration.rb +27 -0
- data/lib/ransack/enum/version.rb +1 -1
- data/ransack-enum.gemspec +18 -23
- metadata +7 -78
- data/.travis.yml +0 -7
- data/lib/ransack/enum/adapters.rb +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e7d29a6d9f1aeb5b49f746c0c16e41b4690ebe4070f90fa5186572927b8ac2ee
|
|
4
|
+
data.tar.gz: a2358d2de52e1297aa65ef24c8a3a4529ff484e657716b7777d670483f9608b9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 64372e91b20d14ccf56ee0567f2aecc9940e2d39c83ca505173a49cea70dc6083fdc6586882c9608e2225d55ac46e8c9009e9e689bb2c5ec6ced8d9934cf7ea1
|
|
7
|
+
data.tar.gz: a3d1790361f9886debedc89d336cab5fea1eb4e17a4faa216c76262dcdc32535666b213bf1b1a60e62db9e53635b47f08a6f7977a1324275a8306767991d6708
|
data/.gitignore
CHANGED
data/.rspec
ADDED
data/.rubocop.yml
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
AllCops:
|
|
2
|
-
|
|
3
|
-
Exclude:
|
|
4
|
-
- Gemfile
|
|
5
|
-
- Gemfile.lock
|
|
6
|
-
- ransack-enum.gemspec
|
|
7
|
-
- vendor/bundle/**/*
|
|
8
|
-
- vendor/bundler/**/*
|
|
2
|
+
NewCops: enable
|
|
9
3
|
Metrics/BlockLength:
|
|
10
4
|
Exclude:
|
|
11
|
-
- spec/**/*
|
|
12
|
-
Metrics/LineLength:
|
|
13
|
-
Max: 80
|
|
14
|
-
IgnoredPatterns: ['(\A|\s+)#']
|
|
5
|
+
- spec/**/*_spec.rb
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 0.3.0 / 2020-09-28
|
|
4
|
+
### New features
|
|
5
|
+
- Support boolean enum value
|
|
6
|
+
### Hotfix
|
|
7
|
+
- Change other than #enum to private
|
|
8
|
+
|
|
9
|
+
## 0.2.1 / 2020-03-17
|
|
10
|
+
### Hotfix
|
|
11
|
+
- Generating an automated security update (rake)
|
|
12
|
+
|
|
13
|
+
## 0.2.0 / 2019-12-02
|
|
14
|
+
### New features
|
|
15
|
+
- Enable / Disable in ransack configuration
|
|
16
|
+
|
|
17
|
+
## 0.1.2 / 2019-12-01
|
|
18
|
+
### Hotfix
|
|
19
|
+
- Fix dependencies
|
|
20
|
+
|
|
21
|
+
## 0.1.1 / 2019-11-30
|
|
22
|
+
### Hotfix
|
|
23
|
+
- Fix dependencies
|
|
24
|
+
|
|
3
25
|
## 0.1.0 / 2019-11-30
|
|
4
26
|
### New features
|
|
5
27
|
- create gem
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -7,9 +7,7 @@ Allow Enum values to be used in [Ransack](https://github.com/activerecord-hacker
|
|
|
7
7
|
Add this line to your application's Gemfile:
|
|
8
8
|
|
|
9
9
|
```ruby
|
|
10
|
-
gem 'ransack-enum',
|
|
11
|
-
git: 'https://github.com/shoma07/ransack-enum.git',
|
|
12
|
-
branch: 'master'
|
|
10
|
+
gem 'ransack-enum', '~> 0.3'
|
|
13
11
|
```
|
|
14
12
|
|
|
15
13
|
And then execute:
|
|
@@ -45,16 +43,36 @@ Post.ransack(status_in: [0, 1]).result.to_sql
|
|
|
45
43
|
# SELECT "posts".* FROM "posts" WHERE "posts"."status" IN (0, 1)
|
|
46
44
|
```
|
|
47
45
|
|
|
46
|
+
### Configuration
|
|
47
|
+
|
|
48
|
+
Enable / Disable enum value search in the configuration.
|
|
49
|
+
Default is enabled.
|
|
50
|
+
|
|
51
|
+
```ruby
|
|
52
|
+
# config/initializers/ransack.rb
|
|
53
|
+
|
|
54
|
+
Ransack.configure do |config|
|
|
55
|
+
# ...
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
Ransack::Enum.configure do |config|
|
|
59
|
+
# enabled
|
|
60
|
+
config.enabled = true
|
|
61
|
+
|
|
62
|
+
# disabled
|
|
63
|
+
# config.enabled = false
|
|
64
|
+
end
|
|
65
|
+
```
|
|
66
|
+
|
|
48
67
|
## Feature
|
|
49
68
|
|
|
50
|
-
- Enable / Disable in ransack configuration
|
|
51
69
|
- Enable to convert enum i18n value to search value
|
|
52
70
|
|
|
53
71
|
## Development
|
|
54
72
|
|
|
55
73
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
56
74
|
|
|
57
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
|
75
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
|
58
76
|
|
|
59
77
|
## Contributing
|
|
60
78
|
|
data/lib/ransack/enum.rb
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'active_support/core_ext'
|
|
4
|
+
require 'ransack'
|
|
4
5
|
require 'ransack/enum/version'
|
|
5
|
-
require 'ransack/enum/
|
|
6
|
+
require 'ransack/enum/configuration'
|
|
7
|
+
require 'ransack/enum/adapters/active_record'
|
|
6
8
|
|
|
7
9
|
module Ransack
|
|
10
|
+
# Ransack::Enum
|
|
8
11
|
module Enum
|
|
9
|
-
|
|
10
|
-
# Your code goes here...
|
|
12
|
+
extend Configuration
|
|
11
13
|
end
|
|
12
14
|
end
|
|
@@ -2,16 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require 'ransack/enum/adapters/active_record/base'
|
|
4
4
|
|
|
5
|
-
module Ransack
|
|
6
|
-
module Enum
|
|
7
|
-
module Adapters
|
|
8
|
-
# Ransack::Enum::Adapters::ActiveRecord
|
|
9
|
-
module ActiveRecord
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
5
|
ActiveSupport.on_load(:active_record) do
|
|
16
6
|
extend Ransack::Enum::Adapters::ActiveRecord::Base
|
|
17
7
|
end
|
|
@@ -8,44 +8,35 @@ module Ransack
|
|
|
8
8
|
module Base
|
|
9
9
|
# @see https://github.com/rails/rails/blob/66cabeda2c46c582d19738e1318be8d59584cc5b/activerecord/lib/active_record/enum.rb#L150
|
|
10
10
|
# @param [Hash] definitions
|
|
11
|
+
# @return [Hash]
|
|
11
12
|
def enum(definitions)
|
|
13
|
+
enum_ransacker(*definitions.to_a.first) if respond_to?(:ransacker)
|
|
12
14
|
super
|
|
13
|
-
enum_ransacker(definitions)
|
|
14
15
|
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
# @param [Hash] definitions
|
|
18
|
-
def enum_ransacker(definitions)
|
|
19
|
-
definitions.each do |name, values|
|
|
20
|
-
fmt = lambda do |v|
|
|
21
|
-
return values[v.to_sym] if values[v.to_sym]
|
|
17
|
+
private
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
else
|
|
33
|
-
v
|
|
34
|
-
end
|
|
35
|
-
end
|
|
19
|
+
# @param [Symbol] name
|
|
20
|
+
# @param [Hash] values
|
|
21
|
+
# @return [Hash]
|
|
22
|
+
def enum_ransacker(name, values)
|
|
23
|
+
converter = enum_ransack_value_converter(name.to_s, values)
|
|
24
|
+
ransacker name, formatter: lambda { |value|
|
|
25
|
+
value.is_a?(Array) ? value.map(&converter) : converter.call(value)
|
|
26
|
+
}
|
|
27
|
+
end
|
|
36
28
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
29
|
+
# @param [String] name
|
|
30
|
+
# @param [Hash] values
|
|
31
|
+
# @return [Proc]
|
|
32
|
+
def enum_ransack_value_converter(name, values)
|
|
33
|
+
lambda do |value|
|
|
34
|
+
val = values[value.to_sym]
|
|
35
|
+
return val if Ransack::Enum.enabled? && !val.nil?
|
|
44
36
|
|
|
45
|
-
|
|
37
|
+
Ransack::Nodes::Value.new(nil, value).cast(attribute_types[name]&.type)
|
|
46
38
|
end
|
|
47
39
|
end
|
|
48
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
|
49
40
|
end
|
|
50
41
|
end
|
|
51
42
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ransack
|
|
4
|
+
module Enum
|
|
5
|
+
# Ransack::Enum::Configuration
|
|
6
|
+
module Configuration
|
|
7
|
+
mattr_accessor :options
|
|
8
|
+
|
|
9
|
+
self.options = { enabled: true }
|
|
10
|
+
|
|
11
|
+
def configure
|
|
12
|
+
yield self
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @param [TrueClass, FalseClass] enabled
|
|
16
|
+
# @return [TrueClass, FalseClass]
|
|
17
|
+
def enabled=(enabled)
|
|
18
|
+
options[:enabled] = enabled
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @return [TrueClass, FalseClass]
|
|
22
|
+
def enabled?
|
|
23
|
+
options[:enabled]
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/ransack/enum/version.rb
CHANGED
data/ransack-enum.gemspec
CHANGED
|
@@ -1,36 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/ransack/enum/version'
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name =
|
|
6
|
+
spec.name = 'ransack-enum'
|
|
7
7
|
spec.version = Ransack::Enum::VERSION
|
|
8
|
-
spec.authors = [
|
|
9
|
-
spec.email = [
|
|
8
|
+
spec.authors = %w[shoma07]
|
|
9
|
+
spec.email = %w[23730734+shoma07@users.noreply.github.com]
|
|
10
10
|
|
|
11
|
-
spec.summary =
|
|
12
|
-
spec.description =
|
|
13
|
-
spec.homepage =
|
|
14
|
-
spec.license
|
|
11
|
+
spec.summary = 'Allow Enum values to be used in Ransack searches'
|
|
12
|
+
spec.description = 'Allow Enum values to be used in Ransack searches'
|
|
13
|
+
spec.homepage = 'https://github.com/shoma07/ransack-enum'
|
|
14
|
+
spec.license = 'MIT'
|
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
|
|
15
16
|
|
|
16
|
-
spec.metadata[
|
|
17
|
-
spec.metadata[
|
|
18
|
-
spec.metadata[
|
|
17
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
|
18
|
+
spec.metadata['source_code_uri'] = spec.homepage
|
|
19
|
+
spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md"
|
|
19
20
|
|
|
20
21
|
# Specify which files should be added to the gem when it is released.
|
|
21
22
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
22
|
-
spec.files
|
|
23
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
23
24
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
24
25
|
end
|
|
25
|
-
spec.bindir =
|
|
26
|
+
spec.bindir = 'exe'
|
|
26
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
27
|
-
spec.require_paths = [
|
|
28
|
-
|
|
29
|
-
spec.add_dependency "ransack", "~> 2.3"
|
|
30
|
-
spec.add_dependency "activesupport", ">= 5.2.1"
|
|
28
|
+
spec.require_paths = %w[lib]
|
|
31
29
|
|
|
32
|
-
spec.
|
|
33
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
|
34
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
|
35
|
-
spec.add_development_dependency "sqlite3", "~> 1.4"
|
|
30
|
+
spec.add_dependency 'ransack', '~> 2.0'
|
|
36
31
|
end
|
metadata
CHANGED
|
@@ -1,99 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ransack-enum
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- shoma07
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-09-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ransack
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '2.3'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '2.3'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: activesupport
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 5.2.1
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: 5.2.1
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: bundler
|
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
|
44
16
|
requirements:
|
|
45
17
|
- - "~>"
|
|
46
18
|
- !ruby/object:Gem::Version
|
|
47
19
|
version: '2.0'
|
|
48
|
-
type: :
|
|
20
|
+
type: :runtime
|
|
49
21
|
prerelease: false
|
|
50
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
23
|
requirements:
|
|
52
24
|
- - "~>"
|
|
53
25
|
- !ruby/object:Gem::Version
|
|
54
26
|
version: '2.0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '10.0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '10.0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rspec
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '3.0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '3.0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: sqlite3
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '1.4'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '1.4'
|
|
97
27
|
description: Allow Enum values to be used in Ransack searches
|
|
98
28
|
email:
|
|
99
29
|
- 23730734+shoma07@users.noreply.github.com
|
|
@@ -104,7 +34,6 @@ files:
|
|
|
104
34
|
- ".gitignore"
|
|
105
35
|
- ".rspec"
|
|
106
36
|
- ".rubocop.yml"
|
|
107
|
-
- ".travis.yml"
|
|
108
37
|
- CHANGELOG.md
|
|
109
38
|
- Gemfile
|
|
110
39
|
- LICENSE.txt
|
|
@@ -113,9 +42,9 @@ files:
|
|
|
113
42
|
- bin/console
|
|
114
43
|
- bin/setup
|
|
115
44
|
- lib/ransack/enum.rb
|
|
116
|
-
- lib/ransack/enum/adapters.rb
|
|
117
45
|
- lib/ransack/enum/adapters/active_record.rb
|
|
118
46
|
- lib/ransack/enum/adapters/active_record/base.rb
|
|
47
|
+
- lib/ransack/enum/configuration.rb
|
|
119
48
|
- lib/ransack/enum/version.rb
|
|
120
49
|
- ransack-enum.gemspec
|
|
121
50
|
homepage: https://github.com/shoma07/ransack-enum
|
|
@@ -124,7 +53,7 @@ licenses:
|
|
|
124
53
|
metadata:
|
|
125
54
|
homepage_uri: https://github.com/shoma07/ransack-enum
|
|
126
55
|
source_code_uri: https://github.com/shoma07/ransack-enum
|
|
127
|
-
changelog_uri: https://github.com/shoma07/ransack-enum/blob/
|
|
56
|
+
changelog_uri: https://github.com/shoma07/ransack-enum/blob/v0.3.0/CHANGELOG.md
|
|
128
57
|
post_install_message:
|
|
129
58
|
rdoc_options: []
|
|
130
59
|
require_paths:
|
|
@@ -133,14 +62,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
133
62
|
requirements:
|
|
134
63
|
- - ">="
|
|
135
64
|
- !ruby/object:Gem::Version
|
|
136
|
-
version:
|
|
65
|
+
version: 2.3.0
|
|
137
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
67
|
requirements:
|
|
139
68
|
- - ">="
|
|
140
69
|
- !ruby/object:Gem::Version
|
|
141
70
|
version: '0'
|
|
142
71
|
requirements: []
|
|
143
|
-
rubygems_version: 3.
|
|
72
|
+
rubygems_version: 3.1.2
|
|
144
73
|
signing_key:
|
|
145
74
|
specification_version: 4
|
|
146
75
|
summary: Allow Enum values to be used in Ransack searches
|
data/.travis.yml
DELETED