enum_help 0.0.17 → 0.0.18
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 +5 -5
- data/.github/workflows/ci.yml +44 -0
- data/.rspec +3 -0
- data/Gemfile +14 -0
- data/README.md +7 -6
- data/Rakefile +1 -0
- data/enum_help.gemspec +3 -6
- data/lib/enum_help/i18n.rb +20 -6
- data/lib/enum_help/version.rb +1 -1
- data/spec/enum_i18n_help_spec.rb +97 -0
- data/spec/fixtures/locales/en.yml +16 -0
- data/spec/fixtures/locales/zh-CN.yml +16 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/setup_database.rb +17 -0
- metadata +20 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6b1fb56c71d55485d1b9c413179c4ec402c4b3ea0b3e9ee362b213122f6fdc6c
|
4
|
+
data.tar.gz: 2e105e8b000e82fc026ebf56aecbd1de97ac944b8f20294615af88efaf95c49c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4f0adcc0a7829ad4d44449eb930e76eed390ea39037f34fabcd640bff615a02ce0b63f6910264f532798381b58527eabf4392b64b77957bce28faf05f494a8a
|
7
|
+
data.tar.gz: ca449b158ab5a0c9a487e95300d0ad91b8581afda1dd28373bd29fb03ceb6a1d94977c0cb0a0ab38fbff462ce34f9807fb22467833313396e493cfdb387df5e5
|
@@ -0,0 +1,44 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
- push
|
5
|
+
- pull_request
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
test:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
strategy:
|
11
|
+
fail-fast: false
|
12
|
+
matrix:
|
13
|
+
ruby-version:
|
14
|
+
- head
|
15
|
+
- 3.1
|
16
|
+
- "3.0"
|
17
|
+
- 2.7
|
18
|
+
- 2.6
|
19
|
+
rails-version:
|
20
|
+
- "edge"
|
21
|
+
- "~> 7.0.1"
|
22
|
+
- "~> 6.1.4"
|
23
|
+
- "~> 6.0.4"
|
24
|
+
- "~> 5.2.6"
|
25
|
+
exclude:
|
26
|
+
- ruby-version: head
|
27
|
+
rails-version: "~> 5.2.6"
|
28
|
+
- ruby-version: 3.1
|
29
|
+
rails-version: "~> 5.2.6"
|
30
|
+
- ruby-version: "3.0"
|
31
|
+
rails-version: "~> 5.2.6"
|
32
|
+
- ruby-version: 2.6
|
33
|
+
rails-version: "edge"
|
34
|
+
- ruby-version: 2.6
|
35
|
+
rails-version: "~> 7.0.1"
|
36
|
+
env:
|
37
|
+
RAILS_VERSION: "${{ matrix.rails-version }}"
|
38
|
+
steps:
|
39
|
+
- uses: actions/checkout@v2
|
40
|
+
- uses: ruby/setup-ruby@v1
|
41
|
+
with:
|
42
|
+
ruby-version: "${{ matrix.ruby-version }}"
|
43
|
+
bundler-cache: true
|
44
|
+
- run: bundle exec rspec
|
data/.rspec
ADDED
data/Gemfile
CHANGED
@@ -2,3 +2,17 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in enum_help.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
gem 'bundler'
|
7
|
+
gem 'rake'
|
8
|
+
gem 'rspec'
|
9
|
+
gem 'sqlite3'
|
10
|
+
|
11
|
+
case version = ENV['RAILS_VERSION']
|
12
|
+
when nil
|
13
|
+
gem 'rails', '~> 7.0'
|
14
|
+
when 'edge'
|
15
|
+
gem 'rails', github: 'rails/rails'
|
16
|
+
else
|
17
|
+
gem 'rails', version
|
18
|
+
end
|
data/README.md
CHANGED
@@ -88,7 +88,7 @@ In `_form.html.erb` using `simple_form`:
|
|
88
88
|
<%= f.input :status %>
|
89
89
|
```
|
90
90
|
|
91
|
-
This will generate select field with translations
|
91
|
+
This will generate select field with translations automatically.
|
92
92
|
|
93
93
|
And if you want to generate select except some values, then you can pass a collection option.
|
94
94
|
|
@@ -106,7 +106,7 @@ e.g.
|
|
106
106
|
<%= f.input :status, as: :string %>
|
107
107
|
```
|
108
108
|
|
109
|
-
From version 0.0.10, enum_help can
|
109
|
+
From version 0.0.10, enum_help can automatically generate radio buttons with i18n labels.
|
110
110
|
|
111
111
|
e.g.
|
112
112
|
```erb
|
@@ -133,7 +133,7 @@ zh-cn:
|
|
133
133
|
|
134
134
|
## Notice
|
135
135
|
If you want to use enum feature, field of your table can't be named with `reference`.
|
136
|
-
When it is named with 'reference' and define enum in model file, there will be
|
136
|
+
When it is named with 'reference' and define enum in model file, there will be raised an error as below:
|
137
137
|
|
138
138
|
NoMethodError: super: no superclass method `enum' for...
|
139
139
|
|
@@ -146,6 +146,7 @@ Thanks for all the [contributors](https://github.com/zmbacker/enum_help/graphs/c
|
|
146
146
|
|
147
147
|
1. Fork it ( http://github.com/zmbacker/enum_help/fork )
|
148
148
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
149
|
-
3.
|
150
|
-
4.
|
151
|
-
5.
|
149
|
+
3. Run test `rspec`
|
150
|
+
4. Commit your changes (`git commit -am 'Add some feature'`)
|
151
|
+
5. Push to the branch (`git push origin my-new-feature`)
|
152
|
+
6. Create new Pull Request
|
data/Rakefile
CHANGED
data/enum_help.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "enum_help/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "enum_help"
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["zm.backer@gmail.com"]
|
11
11
|
spec.summary = %q{ Extends of ActiveRecord::Enum, which can used in simple_form and internationalization }
|
12
12
|
spec.description = %q{ Help ActiveRecord::Enum feature to work fine with I18n and simple_form. }
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "https://github.com/zmbacker/enum_help"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
@@ -18,8 +18,5 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.5"
|
22
|
-
spec.add_development_dependency "rake"
|
23
|
-
|
24
21
|
spec.add_dependency "activesupport", ">= 3.0.0"
|
25
22
|
end
|
data/lib/enum_help/i18n.rb
CHANGED
@@ -2,12 +2,26 @@ module EnumHelp
|
|
2
2
|
|
3
3
|
module I18n
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
if ActiveRecord::VERSION::MAJOR == 7
|
6
|
+
# overwrite the enum method
|
7
|
+
def enum(name = nil, values = nil, **options)
|
8
|
+
super(name, values, **options)
|
9
|
+
|
10
|
+
definitions = options.slice!(:_prefix, :_suffix, :_scopes, :_default)
|
11
|
+
definitions.each do |name, _|
|
12
|
+
Helper.define_attr_i18n_method(self, name)
|
13
|
+
Helper.define_collection_i18n_method(self, name)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
if ActiveRecord::VERSION::MAJOR < 7
|
18
|
+
# overwrite the enum method
|
19
|
+
def enum( definitions )
|
20
|
+
super( definitions )
|
21
|
+
definitions.each do |name, _|
|
22
|
+
Helper.define_attr_i18n_method(self, name)
|
23
|
+
Helper.define_collection_i18n_method(self, name)
|
24
|
+
end
|
11
25
|
end
|
12
26
|
end
|
13
27
|
|
data/lib/enum_help/version.rb
CHANGED
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
EnumHelp::Railtie.initializers.each(&:run)
|
4
|
+
|
5
|
+
class User < ActiveRecord::Base
|
6
|
+
if ActiveRecord.version < Gem::Version.new('6.1')
|
7
|
+
enum gender: [:male, :female]
|
8
|
+
else
|
9
|
+
enum gender: [:male, :female], _default: :male
|
10
|
+
end
|
11
|
+
|
12
|
+
enum status: %i[normal disable]
|
13
|
+
end
|
14
|
+
|
15
|
+
RSpec.describe EnumHelp::I18n do
|
16
|
+
describe '#enum' do
|
17
|
+
context 'With hash definitions' do
|
18
|
+
it 'responds defined _i18n method' do
|
19
|
+
expect(User.new).to respond_to("gender_i18n")
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds defined genders_i18n method' do
|
23
|
+
expect(User).to respond_to("genders_i18n")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'With array definitions' do
|
28
|
+
it 'responds defined _i18n method' do
|
29
|
+
expect(User.new).to respond_to("status_i18n")
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'responds defined status_i18n method' do
|
33
|
+
expect(User).to respond_to("statuses_i18n")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#enum_key_i18n' do
|
39
|
+
describe 'user.gender' do
|
40
|
+
let(:gender) { "female" }
|
41
|
+
let(:user) { User.create(gender: gender) }
|
42
|
+
|
43
|
+
|
44
|
+
subject { user.gender_i18n }
|
45
|
+
|
46
|
+
context 'lang is zh-CN' do
|
47
|
+
before { I18n.locale = :"zh-CN" }
|
48
|
+
|
49
|
+
it { expect(I18n.locale).to eq :"zh-CN" }
|
50
|
+
|
51
|
+
context 'gender is male' do
|
52
|
+
let(:gender) { 'male' }
|
53
|
+
it { is_expected.to eq '男' }
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'gender is female' do
|
57
|
+
let(:gender) { 'female' }
|
58
|
+
it { is_expected.to eq '女' }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'lang is en' do
|
63
|
+
before { I18n.locale = :en }
|
64
|
+
|
65
|
+
it { expect(I18n.locale).to eq :en }
|
66
|
+
|
67
|
+
context 'gender is male' do
|
68
|
+
let(:gender) { 'male' }
|
69
|
+
it { is_expected.to eq 'Male' }
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'gender is female' do
|
73
|
+
let(:gender) { 'female' }
|
74
|
+
it { is_expected.to eq 'Female' }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '#enum_keys_i18n' do
|
81
|
+
subject { User.genders_i18n }
|
82
|
+
|
83
|
+
context 'lang is zh-CN' do
|
84
|
+
before { I18n.locale = :"zh-CN" }
|
85
|
+
|
86
|
+
it { expect(I18n.locale).to eq :"zh-CN" }
|
87
|
+
it { is_expected.to eq({"male"=>"男", "female"=>"女"}) }
|
88
|
+
end
|
89
|
+
|
90
|
+
context 'lang is en' do
|
91
|
+
before { I18n.locale = :en }
|
92
|
+
|
93
|
+
it { expect(I18n.locale).to eq :en }
|
94
|
+
it { is_expected.to eq({"male"=>"Male", "female"=>"Female"}) }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
|
3
|
+
require "rspec"
|
4
|
+
|
5
|
+
require "rails"
|
6
|
+
require "active_record"
|
7
|
+
|
8
|
+
Bundler.require
|
9
|
+
|
10
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
11
|
+
|
12
|
+
I18n.load_path += Dir["#{File.dirname(__FILE__)}/fixtures/locales/*.yml"]
|
13
|
+
I18n.enforce_available_locales = false
|
14
|
+
|
15
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
ActiveRecord::Base.configurations = { "test"=> {"adapter"=>"sqlite3", "database"=>":memory:"} }
|
2
|
+
ActiveRecord::Base.establish_connection :test
|
3
|
+
|
4
|
+
version = "#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}"
|
5
|
+
class CreateAllTables < ActiveRecord::Migration[version]
|
6
|
+
def change
|
7
|
+
create_table :users do |t|
|
8
|
+
t.integer :gender, null: false, default: 0, limit: 1
|
9
|
+
t.integer :status, null: false, default: 0, limit: 1
|
10
|
+
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
ActiveRecord::Migration.verbose = false
|
17
|
+
CreateAllTables.new.change
|
metadata
CHANGED
@@ -1,43 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enum_help
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lester Zhao
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.5'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.5'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
13
|
- !ruby/object:Gem::Dependency
|
42
14
|
name: activesupport
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,7 +32,9 @@ executables: []
|
|
60
32
|
extensions: []
|
61
33
|
extra_rdoc_files: []
|
62
34
|
files:
|
35
|
+
- ".github/workflows/ci.yml"
|
63
36
|
- ".gitignore"
|
37
|
+
- ".rspec"
|
64
38
|
- Gemfile
|
65
39
|
- LICENSE.txt
|
66
40
|
- README.md
|
@@ -71,11 +45,16 @@ files:
|
|
71
45
|
- lib/enum_help/railtie.rb
|
72
46
|
- lib/enum_help/simple_form.rb
|
73
47
|
- lib/enum_help/version.rb
|
74
|
-
|
48
|
+
- spec/enum_i18n_help_spec.rb
|
49
|
+
- spec/fixtures/locales/en.yml
|
50
|
+
- spec/fixtures/locales/zh-CN.yml
|
51
|
+
- spec/spec_helper.rb
|
52
|
+
- spec/support/setup_database.rb
|
53
|
+
homepage: https://github.com/zmbacker/enum_help
|
75
54
|
licenses:
|
76
55
|
- MIT
|
77
56
|
metadata: {}
|
78
|
-
post_install_message:
|
57
|
+
post_install_message:
|
79
58
|
rdoc_options: []
|
80
59
|
require_paths:
|
81
60
|
- lib
|
@@ -90,9 +69,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
69
|
- !ruby/object:Gem::Version
|
91
70
|
version: '0'
|
92
71
|
requirements: []
|
93
|
-
|
94
|
-
|
95
|
-
signing_key:
|
72
|
+
rubygems_version: 3.1.6
|
73
|
+
signing_key:
|
96
74
|
specification_version: 4
|
97
75
|
summary: Extends of ActiveRecord::Enum, which can used in simple_form and internationalization
|
98
|
-
test_files:
|
76
|
+
test_files:
|
77
|
+
- spec/enum_i18n_help_spec.rb
|
78
|
+
- spec/fixtures/locales/en.yml
|
79
|
+
- spec/fixtures/locales/zh-CN.yml
|
80
|
+
- spec/spec_helper.rb
|
81
|
+
- spec/support/setup_database.rb
|