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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7549f0d615e6836ad8d5c1ecbeb5da477c53cab979f47fe797b577fe7563d3e3
4
- data.tar.gz: 3cf5ba60975e996fc3e2589c3fd4f0de56069c0f0333fa83ef2f207055fa78b0
3
+ metadata.gz: f1afbcd408f71081fbc447ce1eaf591e6e902978969e802a0c3bf96448e93d48
4
+ data.tar.gz: 10aa583067d1b8704027191cad180353af7675178baf1e3b28dbaecfd5965306
5
5
  SHA512:
6
- metadata.gz: 6e079c505e13f75b63896be2d0339bf74e9df8a85d358094067231513202234e1b332fd62fef230099401c6619b74c9757ca45b71a4e5a45f355309378e40672
7
- data.tar.gz: cc9a1e2c3bf288ab36e3e7dd3f26a35d194e9f4a85ea69cd65fc8ac7af02f25846dd3b0c290710e79a189de19e3908988700a6430849235054ec8a04749cbfc8
6
+ metadata.gz: 43734b3d37556813d8a4a5837270342a90ddf7ee3f1d9f0a607846313b415ae57ed58dfd9b86c269e5b10cb571c2e3d825ef625e5cba3320ce2c9bdbe20088ea
7
+ data.tar.gz: 5efb2f770b16591b7ca3e382f845802de16bab83c30bbd8c5f65ffac600bbfeae64bc60935a1d587d12583ef7239a8fa4795677cbf7984308fff773dc7c12e06
data/.gitignore CHANGED
@@ -9,7 +9,8 @@
9
9
  /vendor
10
10
  .DS_Store
11
11
  Gemfile.lock
12
- .rspec
13
12
 
14
13
  # rspec failure tracking
15
14
  .rspec_status
15
+
16
+ .ruby-version
data/.rubocop.yml CHANGED
@@ -1,14 +1,16 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+ - rubocop-rspec
5
+
1
6
  AllCops:
2
- TargetRubyVersion: 2.6.5
3
- Exclude:
4
- - Gemfile
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
- Metrics/LineLength:
13
- Max: 80
14
- IgnoredPatterns: ['(\A|\s+)#']
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
- source "https://rubygems.org"
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
- # Ransack::Enum
1
+ # RansackEnum
2
2
 
3
- Allow Enum values to be used in [Ransack](https://github.com/activerecord-hackery/ransack) searches.
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-enum'
10
+ gem 'ransack', '~> 2.0'
11
+ gem 'ransack-enum', '~> 1.0'
11
12
  ```
12
13
 
13
14
  And then execute:
14
15
 
15
- $ bundle
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 spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
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`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
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
- task default: :spec
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
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'bundler/setup'
5
- require 'ransack/enum'
5
+ require 'ransack-enum'
6
6
 
7
7
  # You can add fixtures and/or initialization code here to make experimenting
8
8
  # with your gem easier. You can also use a different console, if you like.
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'ransack_enum'
@@ -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
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RansackEnum
4
+ # @return [String]
5
+ VERSION = '1.0.0'
6
+ end
@@ -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
- lib = File.expand_path("lib", __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "ransack/enum/version"
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 = "ransack-enum"
7
- spec.version = Ransack::Enum::VERSION
8
- spec.authors = ["shoma07"]
9
- spec.email = ["23730734+shoma07@users.noreply.github.com"]
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 = "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.required_ruby_version = ">= 2.3"
15
- spec.license = "MIT"
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["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = spec.homepage
19
- spec.metadata["changelog_uri"] = "https://github.com/shoma07/ransack-enum/blob/v#{spec.version}/CHANGELOG.md"
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 = Dir.chdir(File.expand_path('..', __FILE__)) do
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 = "exe"
26
+ spec.bindir = 'exe'
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
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.1.2
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: 2019-11-30 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
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/enum.rb
102
- - lib/ransack/enum/adapters.rb
103
- - lib/ransack/enum/adapters/active_record.rb
104
- - lib/ransack/enum/adapters/active_record/base.rb
105
- - lib/ransack/enum/version.rb
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
- homepage_uri: https://github.com/shoma07/ransack-enum
112
- source_code_uri: https://github.com/shoma07/ransack-enum
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: '2.3'
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.0.3
130
- signing_key:
60
+ rubygems_version: 3.2.3
61
+ signing_key:
131
62
  specification_version: 4
132
- summary: Allow Enum values to be used in Ransack searches
63
+ summary: Enable enum values in Ransack search
133
64
  test_files: []
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.6.5
7
- before_install: gem install bundler -v 2.0.2
@@ -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
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'ransack/enum/adapters/active_record'
4
-
5
- module Ransack
6
- module Enum
7
- # Ransack::Enum::Adapters
8
- module Adapters
9
- end
10
- end
11
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ransack
4
- module Enum
5
- VERSION = '0.1.2'
6
- end
7
- end
data/lib/ransack/enum.rb DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext'
4
- require 'ransack/enum/version'
5
- require 'ransack/enum/adapters'
6
-
7
- module Ransack
8
- module Enum
9
- class Error < StandardError; end
10
- # Your code goes here...
11
- end
12
- end