ransack-enum 0.1.2 → 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 +4 -4
- data/.gitignore +2 -1
- data/.rubocop.yml +13 -11
- data/CHANGELOG.md +21 -0
- data/Gemfile +13 -1
- data/README.md +33 -7
- data/Rakefile +17 -2
- data/bin/console +1 -1
- data/lib/ransack-enum.rb +3 -0
- data/lib/ransack_enum/adapters/active_record_6.rb +18 -0
- data/lib/ransack_enum/adapters/active_record_7.rb +20 -0
- data/lib/ransack_enum/adapters.rb +19 -0
- data/lib/ransack_enum/configuration.rb +31 -0
- data/lib/ransack_enum/formatter.rb +58 -0
- data/lib/ransack_enum/ransacker.rb +40 -0
- data/lib/ransack_enum/version.rb +6 -0
- data/lib/ransack_enum.rb +30 -0
- data/ransack-enum.gemspec +19 -25
- metadata +20 -89
- data/.travis.yml +0 -7
- data/lib/ransack/enum/adapters/active_record/base.rb +0 -53
- data/lib/ransack/enum/adapters/active_record.rb +0 -17
- data/lib/ransack/enum/adapters.rb +0 -11
- data/lib/ransack/enum/version.rb +0 -7
- data/lib/ransack/enum.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1afbcd408f71081fbc447ce1eaf591e6e902978969e802a0c3bf96448e93d48
|
4
|
+
data.tar.gz: 10aa583067d1b8704027191cad180353af7675178baf1e3b28dbaecfd5965306
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43734b3d37556813d8a4a5837270342a90ddf7ee3f1d9f0a607846313b415ae57ed58dfd9b86c269e5b10cb571c2e3d825ef625e5cba3320ce2c9bdbe20088ea
|
7
|
+
data.tar.gz: 5efb2f770b16591b7ca3e382f845802de16bab83c30bbd8c5f65ffac600bbfeae64bc60935a1d587d12583ef7239a8fa4795677cbf7984308fff773dc7c12e06
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-performance
|
3
|
+
- rubocop-rake
|
4
|
+
- rubocop-rspec
|
5
|
+
|
1
6
|
AllCops:
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
- Gemfile.lock
|
6
|
-
- ransack-enum.gemspec
|
7
|
-
- vendor/bundle/**/*
|
8
|
-
- vendor/bundler/**/*
|
7
|
+
NewCops: enable
|
8
|
+
TargetRubyVersion: 2.6
|
9
|
+
|
9
10
|
Metrics/BlockLength:
|
10
11
|
Exclude:
|
11
|
-
- spec/**/*
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
- spec/**/*_spec.rb
|
13
|
+
|
14
|
+
Naming/FileName:
|
15
|
+
Exclude:
|
16
|
+
- lib/ransack-enum.rb
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 1.0.0 / 2021-12-31
|
4
|
+
### New features
|
5
|
+
- Supported version 7 of ActiveRecord.
|
6
|
+
### Incompatible changes
|
7
|
+
- Require name of gem has changed from `ransack/enum` to `ransack-enum`.
|
8
|
+
- Module of gem has changed from `Ransack::Enum` to `RansackEnum`.
|
9
|
+
|
10
|
+
## 0.3.0 / 2020-09-28
|
11
|
+
### New features
|
12
|
+
- Support boolean enum value
|
13
|
+
### Hotfix
|
14
|
+
- Change other than #enum to private
|
15
|
+
|
16
|
+
## 0.2.1 / 2020-03-17
|
17
|
+
### Hotfix
|
18
|
+
- Generating an automated security update (rake)
|
19
|
+
|
20
|
+
## 0.2.0 / 2019-12-02
|
21
|
+
### New features
|
22
|
+
- Enable / Disable in ransack configuration
|
23
|
+
|
3
24
|
## 0.1.2 / 2019-12-01
|
4
25
|
### Hotfix
|
5
26
|
- Fix dependencies
|
data/Gemfile
CHANGED
@@ -1,4 +1,16 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
# Specify your gem's dependencies in ransack-enum.gemspec
|
4
6
|
gemspec
|
7
|
+
|
8
|
+
gem 'rake'
|
9
|
+
gem 'ransack', require: false
|
10
|
+
gem 'rspec', require: false
|
11
|
+
gem 'rubocop', require: false
|
12
|
+
gem 'rubocop-performance', require: false
|
13
|
+
gem 'rubocop-rake', require: false
|
14
|
+
gem 'rubocop-rspec', require: false
|
15
|
+
gem 'sqlite3', require: false
|
16
|
+
gem 'yard', require: false
|
data/README.md
CHANGED
@@ -1,18 +1,21 @@
|
|
1
|
-
#
|
1
|
+
# RansackEnum
|
2
2
|
|
3
|
-
|
3
|
+
Enable enum values in [Ransack](https://github.com/activerecord-hackery/ransack) search.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
9
|
```ruby
|
10
|
-
gem 'ransack
|
10
|
+
gem 'ransack', '~> 2.0'
|
11
|
+
gem 'ransack-enum', '~> 1.0'
|
11
12
|
```
|
12
13
|
|
13
14
|
And then execute:
|
14
15
|
|
15
|
-
|
16
|
+
```sh
|
17
|
+
$ bundle install
|
18
|
+
```
|
16
19
|
|
17
20
|
## Usage
|
18
21
|
|
@@ -22,6 +25,9 @@ There is no need to add any special code.
|
|
22
25
|
```ruby
|
23
26
|
class Post < ActiveRecord::Base
|
24
27
|
enum status: { unpublished: 0, published: 1 }
|
28
|
+
|
29
|
+
# after ActiveRecord 7, the following is also possible.
|
30
|
+
# enum :status, { unpublished: 0, published: 1 }
|
25
31
|
end
|
26
32
|
```
|
27
33
|
|
@@ -43,16 +49,36 @@ Post.ransack(status_in: [0, 1]).result.to_sql
|
|
43
49
|
# SELECT "posts".* FROM "posts" WHERE "posts"."status" IN (0, 1)
|
44
50
|
```
|
45
51
|
|
52
|
+
### Configuration
|
53
|
+
|
54
|
+
Enable / Disable enum value search in the configuration.
|
55
|
+
Default is enabled.
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
# config/initializers/ransack.rb
|
59
|
+
|
60
|
+
Ransack.configure do |config|
|
61
|
+
# ...
|
62
|
+
end
|
63
|
+
|
64
|
+
RansackEnum.configure do |config|
|
65
|
+
# enabled (default)
|
66
|
+
config.enabled = true
|
67
|
+
|
68
|
+
# disabled
|
69
|
+
# config.enabled = false
|
70
|
+
end
|
71
|
+
```
|
72
|
+
|
46
73
|
## Feature
|
47
74
|
|
48
|
-
- Enable / Disable in ransack configuration
|
49
75
|
- Enable to convert enum i18n value to search value
|
50
76
|
|
51
77
|
## Development
|
52
78
|
|
53
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake
|
79
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rake` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
54
80
|
|
55
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
81
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
56
82
|
|
57
83
|
## Contributing
|
58
84
|
|
data/Rakefile
CHANGED
@@ -1,8 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'bundler/gem_tasks'
|
4
|
-
require 'rspec/core/rake_task'
|
5
4
|
|
5
|
+
require 'rspec/core/rake_task'
|
6
6
|
RSpec::Core::RakeTask.new(:spec)
|
7
7
|
|
8
|
-
|
8
|
+
require 'rubocop/rake_task'
|
9
|
+
RuboCop::RakeTask.new(:lint) do |t|
|
10
|
+
t.options = %w[--parallel]
|
11
|
+
end
|
12
|
+
namespace :lint do
|
13
|
+
desc 'Lint fix (Rubocop)'
|
14
|
+
task fix: :auto_correct
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'yard'
|
18
|
+
desc 'document'
|
19
|
+
task :doc do
|
20
|
+
YARD::CLI::CommandParser.run
|
21
|
+
end
|
22
|
+
|
23
|
+
task default: %i[lint spec]
|
data/bin/console
CHANGED
data/lib/ransack-enum.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RansackEnum
|
4
|
+
module Adapters
|
5
|
+
# RansackEnum::Adapters::ActiveRecord6
|
6
|
+
module ActiveRecord6
|
7
|
+
# @param definitions [Hash]
|
8
|
+
# @return [void]
|
9
|
+
def enum(definitions)
|
10
|
+
::RansackEnum::Ransacker.new(self, nil, nil, **definitions.to_h.deep_dup).then do |enum_ransacker|
|
11
|
+
super.tap { enum_ransacker.call }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private_constant :ActiveRecord6
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RansackEnum
|
4
|
+
module Adapters
|
5
|
+
# RansackEnum::Adapters::ActiveRecord7
|
6
|
+
module ActiveRecord7
|
7
|
+
# @param name [Symbol, nil]
|
8
|
+
# @param values [Hash, nil]
|
9
|
+
# @param options [Hash]
|
10
|
+
# @return [void]
|
11
|
+
def enum(name = nil, values = nil, **options)
|
12
|
+
::RansackEnum::Ransacker.new(self, name, values.deep_dup, **options.deep_dup).then do |enum_ransacker|
|
13
|
+
super.tap { enum_ransacker.call }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private_constant :ActiveRecord7
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'adapters/active_record_6'
|
4
|
+
require_relative 'adapters/active_record_7'
|
5
|
+
|
6
|
+
module RansackEnum
|
7
|
+
# RansackEnum::Adapters
|
8
|
+
module Adapters
|
9
|
+
::ActiveSupport.on_load(:active_record) do
|
10
|
+
if Integer(::ActiveRecord::VERSION::STRING.split('.').first) >= 7
|
11
|
+
extend ActiveRecord7
|
12
|
+
else
|
13
|
+
extend ActiveRecord6
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private_constant :Adapters
|
19
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RansackEnum
|
4
|
+
# RansackEnum::Configuration
|
5
|
+
class Configuration
|
6
|
+
# @return [void]
|
7
|
+
def initialize
|
8
|
+
@enabled = true
|
9
|
+
end
|
10
|
+
|
11
|
+
# @param enabled [Boolean]
|
12
|
+
# @return [void]
|
13
|
+
# @raise [ArgumentError]
|
14
|
+
def enabled=(enabled)
|
15
|
+
raise ArgumentError if !enabled.is_a?(::TrueClass) && !enabled.is_a?(::FalseClass)
|
16
|
+
|
17
|
+
@enabled = enabled
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Boolean]
|
21
|
+
def enabled?
|
22
|
+
enabled
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# @!attribute [r] enabled
|
28
|
+
# @return [Boolean]
|
29
|
+
attr_reader :enabled
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RansackEnum
|
4
|
+
# RansackEnum::Formatter
|
5
|
+
class Formatter
|
6
|
+
# @param model_class [Class]
|
7
|
+
# @param name [String]
|
8
|
+
# @param values [Array, Hash]
|
9
|
+
# @return [void]
|
10
|
+
def initialize(model_class, name, values)
|
11
|
+
@model_class = model_class
|
12
|
+
@name = name
|
13
|
+
@normalized_values = normalize_values(values)
|
14
|
+
end
|
15
|
+
|
16
|
+
# @param value [Object]
|
17
|
+
# @return [Object]
|
18
|
+
def call(value)
|
19
|
+
value.is_a?(::Array) ? (value.map { |val| normalize_value(val) }) : normalize_value(value)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# @!attribute [r] model_class
|
25
|
+
# @return [Class]
|
26
|
+
attr_reader :model_class
|
27
|
+
# @!attribute [r] name
|
28
|
+
# @return [String]
|
29
|
+
attr_reader :name
|
30
|
+
# @!attribute [r] normalized_values
|
31
|
+
# @return [Hash]
|
32
|
+
attr_reader :normalized_values
|
33
|
+
|
34
|
+
# @param values [Array, Hash]
|
35
|
+
# @return [Hash]
|
36
|
+
def normalize_values(values)
|
37
|
+
(values.is_a?(::Hash) ? values : [values, ::Array.new(values.size, &:itself)].transpose.to_h).symbolize_keys
|
38
|
+
end
|
39
|
+
|
40
|
+
# @param value [Object]
|
41
|
+
# @return [Object]
|
42
|
+
def normalize_value(value)
|
43
|
+
enum_value(value).then { |val| cast_value(val.nil? ? value : val) }
|
44
|
+
end
|
45
|
+
|
46
|
+
# @param value [Object]
|
47
|
+
# @return [Object]
|
48
|
+
def enum_value(value)
|
49
|
+
normalized_values[value.to_sym] if ::RansackEnum.config.enabled? && value.respond_to?(:to_sym)
|
50
|
+
end
|
51
|
+
|
52
|
+
# @param value [Object]
|
53
|
+
# @return [Object]
|
54
|
+
def cast_value(value)
|
55
|
+
::Ransack::Nodes::Value.new(nil, value).cast(model_class.attribute_types[name]&.type)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RansackEnum
|
4
|
+
# RansackEnum::Ransacker
|
5
|
+
class Ransacker
|
6
|
+
# @param model_class [Class]
|
7
|
+
# @param name [Symbol, nil]
|
8
|
+
# @param values [Hash, nil]
|
9
|
+
# @param options [Hash]
|
10
|
+
# @return [void]
|
11
|
+
def initialize(model_class, name = nil, values = nil, **options)
|
12
|
+
@model_class = model_class
|
13
|
+
if name
|
14
|
+
@name = name
|
15
|
+
@values = values || options
|
16
|
+
else
|
17
|
+
@name, @values = options.slice!(:_prefix, :_suffix, :_scopes, :_default).to_a.first
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# @return [void]
|
22
|
+
def call
|
23
|
+
return if !model_class.respond_to?(:ransacker) || !name || !values
|
24
|
+
|
25
|
+
model_class.ransacker(name.to_sym, formatter: ::RansackEnum::Formatter.new(model_class, name.to_s, values))
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
# @!attribute [r] model_class
|
31
|
+
# @return [Class]
|
32
|
+
attr_reader :model_class
|
33
|
+
# @!attribute [r] name
|
34
|
+
# @return [Symbol, nil]
|
35
|
+
attr_reader :name
|
36
|
+
# @!attribute [r] values
|
37
|
+
# @return [Hash, nil]
|
38
|
+
attr_reader :values
|
39
|
+
end
|
40
|
+
end
|
data/lib/ransack_enum.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support'
|
4
|
+
require_relative 'ransack_enum/version'
|
5
|
+
require_relative 'ransack_enum/configuration'
|
6
|
+
require_relative 'ransack_enum/formatter'
|
7
|
+
require_relative 'ransack_enum/ransacker'
|
8
|
+
require_relative 'ransack_enum/adapters'
|
9
|
+
|
10
|
+
# RansackEnum
|
11
|
+
module RansackEnum
|
12
|
+
# RansackEnum::Error
|
13
|
+
class Error < StandardError; end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
# @return [RansackEnum::Configuration]
|
17
|
+
def config
|
18
|
+
@config ||= ::RansackEnum::Configuration.new
|
19
|
+
end
|
20
|
+
|
21
|
+
# @yieldparam config [RansackEnum::Configuration]
|
22
|
+
# @yieldreturn [void]
|
23
|
+
# @return [void]
|
24
|
+
def configure
|
25
|
+
raise ::RansackEnum::Error, 'No block is given!' unless block_given?
|
26
|
+
|
27
|
+
yield config
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/ransack-enum.gemspec
CHANGED
@@ -1,36 +1,30 @@
|
|
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 =
|
7
|
-
spec.version =
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
6
|
+
spec.name = 'ransack-enum'
|
7
|
+
spec.version = RansackEnum::VERSION
|
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.
|
15
|
-
spec.
|
11
|
+
spec.summary = 'Enable enum values in Ransack search'
|
12
|
+
spec.description = 'Enable enum values in Ransack search'
|
13
|
+
spec.homepage = 'https://github.com/shoma07/ransack-enum'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
|
16
16
|
|
17
|
-
spec.metadata[
|
18
|
-
spec.metadata[
|
19
|
-
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"
|
20
20
|
|
21
21
|
# Specify which files should be added to the gem when it is released.
|
22
22
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
23
|
-
spec.files
|
23
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
24
24
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
25
|
end
|
26
|
-
spec.bindir =
|
26
|
+
spec.bindir = 'exe'
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
-
spec.require_paths = [
|
29
|
-
|
30
|
-
spec.add_dependency "ransack", "~> 2.0"
|
31
|
-
|
32
|
-
spec.add_development_dependency "bundler", "~> 2.0"
|
33
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
34
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
35
|
-
spec.add_development_dependency "sqlite3", "~> 1.4"
|
28
|
+
spec.require_paths = %w[lib]
|
29
|
+
spec.metadata = { 'rubygems_mfa_required' => 'true' }
|
36
30
|
end
|
metadata
CHANGED
@@ -1,86 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ransack-enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- shoma07
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
name: ransack
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '2.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '2.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '2.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: '10.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '10.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '3.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: sqlite3
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.4'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.4'
|
83
|
-
description: Allow Enum values to be used in Ransack searches
|
11
|
+
date: 2021-12-31 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Enable enum values in Ransack search
|
84
14
|
email:
|
85
15
|
- 23730734+shoma07@users.noreply.github.com
|
86
16
|
executables: []
|
@@ -90,7 +20,6 @@ files:
|
|
90
20
|
- ".gitignore"
|
91
21
|
- ".rspec"
|
92
22
|
- ".rubocop.yml"
|
93
|
-
- ".travis.yml"
|
94
23
|
- CHANGELOG.md
|
95
24
|
- Gemfile
|
96
25
|
- LICENSE.txt
|
@@ -98,20 +27,22 @@ files:
|
|
98
27
|
- Rakefile
|
99
28
|
- bin/console
|
100
29
|
- bin/setup
|
101
|
-
- lib/ransack
|
102
|
-
- lib/
|
103
|
-
- lib/
|
104
|
-
- lib/
|
105
|
-
- lib/
|
30
|
+
- lib/ransack-enum.rb
|
31
|
+
- lib/ransack_enum.rb
|
32
|
+
- lib/ransack_enum/adapters.rb
|
33
|
+
- lib/ransack_enum/adapters/active_record_6.rb
|
34
|
+
- lib/ransack_enum/adapters/active_record_7.rb
|
35
|
+
- lib/ransack_enum/configuration.rb
|
36
|
+
- lib/ransack_enum/formatter.rb
|
37
|
+
- lib/ransack_enum/ransacker.rb
|
38
|
+
- lib/ransack_enum/version.rb
|
106
39
|
- ransack-enum.gemspec
|
107
40
|
homepage: https://github.com/shoma07/ransack-enum
|
108
41
|
licenses:
|
109
42
|
- MIT
|
110
43
|
metadata:
|
111
|
-
|
112
|
-
|
113
|
-
changelog_uri: https://github.com/shoma07/ransack-enum/blob/v0.1.2/CHANGELOG.md
|
114
|
-
post_install_message:
|
44
|
+
rubygems_mfa_required: 'true'
|
45
|
+
post_install_message:
|
115
46
|
rdoc_options: []
|
116
47
|
require_paths:
|
117
48
|
- lib
|
@@ -119,15 +50,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
50
|
requirements:
|
120
51
|
- - ">="
|
121
52
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
53
|
+
version: 2.6.0
|
123
54
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
55
|
requirements:
|
125
56
|
- - ">="
|
126
57
|
- !ruby/object:Gem::Version
|
127
58
|
version: '0'
|
128
59
|
requirements: []
|
129
|
-
rubygems_version: 3.
|
130
|
-
signing_key:
|
60
|
+
rubygems_version: 3.2.3
|
61
|
+
signing_key:
|
131
62
|
specification_version: 4
|
132
|
-
summary:
|
63
|
+
summary: Enable enum values in Ransack search
|
133
64
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Ransack
|
4
|
-
module Enum
|
5
|
-
module Adapters
|
6
|
-
module ActiveRecord
|
7
|
-
# Ransack::Enum::Adapters::ActiveRecord::Base
|
8
|
-
module Base
|
9
|
-
# @see https://github.com/rails/rails/blob/66cabeda2c46c582d19738e1318be8d59584cc5b/activerecord/lib/active_record/enum.rb#L150
|
10
|
-
# @param [Hash] definitions
|
11
|
-
def enum(definitions)
|
12
|
-
super
|
13
|
-
enum_ransacker(definitions) if respond_to?(:ransacker)
|
14
|
-
end
|
15
|
-
|
16
|
-
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
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]
|
22
|
-
|
23
|
-
case columns_hash[name.to_s]&.type
|
24
|
-
when :integer
|
25
|
-
v.to_i
|
26
|
-
when :boolean
|
27
|
-
if ActiveRecord::VERSION::MAJOR >= 5
|
28
|
-
ActiveRecord::Type::Boolean.new.cast(v)
|
29
|
-
else
|
30
|
-
ActiveRecord::Type::Boolean.new.type_cast_from_database(v)
|
31
|
-
end
|
32
|
-
else
|
33
|
-
v
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
formatter = proc do |val|
|
38
|
-
if val.is_a?(Array)
|
39
|
-
val.map { |v| fmt.call(v) }
|
40
|
-
else
|
41
|
-
fmt.call(val)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
ransacker name.to_sym, formatter: formatter
|
46
|
-
end
|
47
|
-
end
|
48
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'ransack/enum/adapters/active_record/base'
|
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
|
-
ActiveSupport.on_load(:active_record) do
|
16
|
-
extend Ransack::Enum::Adapters::ActiveRecord::Base
|
17
|
-
end
|
data/lib/ransack/enum/version.rb
DELETED
data/lib/ransack/enum.rb
DELETED