komagire 0.2.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e00ac6aa8201c16a19a9c4ba817a2a8358010a25
4
- data.tar.gz: d62a8c077be504fe72c97d808d1741cf0df00c6d
2
+ SHA256:
3
+ metadata.gz: '08112e71017b77c5d9eacece167c6138c2d4aec68f42e00c8634a33290a4875e'
4
+ data.tar.gz: 91b7db0ac2005076e2bc25b282ecbc6bd69b5191ebf8e2c23c3ece60eb3575eb
5
5
  SHA512:
6
- metadata.gz: ac155f5e5ced1036ac217750aea09c212b2dd49005473636da2c4d5afa8745b7c11fbd9dea66c1463d79b8089e27004c52304a327e0ede7a6180279fed3df1ac
7
- data.tar.gz: 4abd6d26a29a17580fe31bed90c4efcac6c950be2699d20a42912ba43cb4329381c7f4fb6bec3f59053acca7d4292db95031e4d221b2519e62ea85f9f020b936
6
+ metadata.gz: 3c0602d61599ae90e3dbe61c25ff4716e18f911e3fc3396cbeee21b070c63e941e0a9c18501faed9392146820d34868d286f5ea1471f3955aa3e56542ffc4d2e
7
+ data.tar.gz: 48de96f1ab5cc03b6d7e2afc41f24ec34feb839aacb04f70dc739a735e4c4ba5764bf1d0223d28d66c0cbe479a81070fa5835af151790a9bd3a28277dea26bcf
@@ -0,0 +1,38 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ branches: [ master ]
7
+
8
+ jobs:
9
+ test:
10
+
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['2.6', '2.7', '3.0']
15
+ rails-version: ['5.2', '6.0', '6.1', '7.0']
16
+ exclude:
17
+ - ruby-version: '2.6'
18
+ rails-version: '7.0'
19
+ - ruby-version: '2.7'
20
+ rails-version: '5.2'
21
+ - ruby-version: '3.0'
22
+ rails-version: '5.2'
23
+
24
+ env:
25
+ APPRAISAL: rails_${{ matrix.rails-version }}
26
+
27
+ steps:
28
+ - uses: actions/checkout@v2
29
+ - name: Set up Ruby
30
+ uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ - name: Install dependencies
34
+ run: |
35
+ bundle install
36
+ bundle exec appraisal $APPRAISAL bundle install
37
+ - name: Run tests
38
+ run: bundle exec appraisal $APPRAISAL rake
data/.gitignore CHANGED
@@ -4,6 +4,8 @@
4
4
  /_yardoc/
5
5
  /coverage/
6
6
  /doc/
7
+ /gemfiles/.bundle/
8
+ /gemfiles/*.lock
7
9
  /pkg/
8
10
  /spec/reports/
9
11
  /tmp/
data/Appraisals ADDED
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ appraise "rails_5.2" do
4
+ gem "activerecord", "~> 5.2.0"
5
+ gem "activesupport", "~> 5.2.0"
6
+ end
7
+
8
+ appraise "rails_6.0" do
9
+ gem "activerecord", "~> 6.0.0"
10
+ gem "activesupport", "~> 6.0.0"
11
+ gem "sqlite3", "~> 1.4"
12
+ end
13
+
14
+ appraise "rails_6.1" do
15
+ gem "activerecord", "~> 6.1.0"
16
+ gem "activesupport", "~> 6.1.0"
17
+ gem "sqlite3", "~> 1.4"
18
+ end
19
+
20
+ appraise "rails_7.0" do
21
+ gem "activerecord", "~> 7.0.0"
22
+ gem "activesupport", "~> 7.0.0"
23
+ gem "sqlite3", "~> 1.4"
24
+ end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.6.0
4
+
5
+ - Avoid needless override in `KeyList#freeze` (#13)
6
+ - Change required ruby version to 2.6+ (#14)
7
+ - Change required rails version to 5.2+ (#14)
8
+ - Migrate CI from Travis CI to GitHub Actions (#14)
9
+
10
+ ## 0.5.0
11
+
12
+ - Support Ruby 2.7 (#10)
13
+ - Change required ruby version to 2.4+ (#11)
14
+ - Prevent extra query when cskeys are empty (#12)
15
+ - Add support Rails 6.1.0.rc1 (#13)
16
+
17
+ ## 0.4.0
18
+
19
+ - CI against for Rails 6.0.0 and drop Ruby 2.2/2.3 supports (#9)
20
+ - Add Rails 6.0.0.rc2 support and update Ruby version for CI (#8)
21
+
22
+ ## 0.3.0
23
+
24
+ - Change support versions of Ruby and Rails (#7)
25
+
3
26
  ## 0.2.2
4
27
 
5
28
  - Support Rails 5.1 (#4)
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in komagire.gemspec
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
 
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "bundler/setup"
4
5
  require "komagire"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 5.2.0"
6
+ gem "activesupport", "~> 5.2.0"
7
+
8
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 6.0.0"
6
+ gem "activesupport", "~> 6.0.0"
7
+ gem "sqlite3", "~> 1.4"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 6.1.0"
6
+ gem "activesupport", "~> 6.1.0"
7
+ gem "sqlite3", "~> 1.4"
8
+
9
+ gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 7.0.0"
6
+ gem "activesupport", "~> 7.0.0"
7
+ gem "sqlite3", "~> 1.4"
8
+
9
+ gemspec path: "../"
data/komagire.gemspec CHANGED
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'komagire/version'
5
6
 
@@ -19,14 +20,15 @@ Gem::Specification.new do |spec|
19
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
21
  spec.require_paths = ["lib"]
21
22
 
22
- spec.required_ruby_version = '>= 2.0.0'
23
+ spec.required_ruby_version = '>= 2.6.0'
23
24
 
24
- spec.add_runtime_dependency "activesupport", ">= 4.0", "< 5.2"
25
- spec.add_runtime_dependency "activerecord", ">= 4.0", "< 5.2"
25
+ spec.add_runtime_dependency "activerecord", ">= 5.2"
26
+ spec.add_runtime_dependency "activesupport", ">= 5.2"
26
27
  spec.add_development_dependency "active_hash"
27
28
 
28
- spec.add_development_dependency "bundler", "~> 1.10"
29
- spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "appraisal", ">= 2.4.1"
30
+ spec.add_development_dependency "bundler", ">= 1.16"
31
+ spec.add_development_dependency "rake", ">= 10.0"
30
32
  spec.add_development_dependency "rspec"
31
33
  spec.add_development_dependency "sqlite3"
32
34
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Komagire
2
4
  module ActiveRecordExtension
3
5
  # @param [Symbol] part_id
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Komagire
2
4
  class IdList < KeyList
3
5
  # @param [String] content_class_name
@@ -28,7 +30,7 @@ module Komagire
28
30
  if ancestors.include?('ActiveHash::Base')
29
31
  values = _keys.map { |id| content_class_name.constantize.find_by_id(id) }.compact
30
32
  if @sort
31
- values.sort_by { |v| v.id }
33
+ values.sort_by(&:id)
32
34
  else
33
35
  values
34
36
  end
@@ -39,15 +41,14 @@ module Komagire
39
41
 
40
42
  class Converter < KeyList::Converter
41
43
  def convert_to_cskeys_from_array(values)
42
- case
43
- when values.all? { |v| v.is_a?(String) }
44
+ if values.all? { |v| v.is_a?(String) }
44
45
  values.join(delimiter)
45
- when values.all? { |v| v.is_a?(Integer) }
46
+ elsif values.all? { |v| v.is_a?(Integer) }
46
47
  values.join(delimiter)
47
- when values.all? { |v| v.is_a?(content_class_name.constantize) }
48
+ elsif values.all? { |v| v.is_a?(content_class_name.constantize) }
48
49
  values.map(&attribute).join(delimiter)
49
50
  else
50
- fail DifferentContentClass
51
+ raise DifferentContentClass
51
52
  end
52
53
  end
53
54
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'delegate'
2
4
 
3
5
  module Komagire
@@ -30,15 +32,6 @@ module Komagire
30
32
  ([''] + key_values + ['']).join(@delimiter)
31
33
  end
32
34
 
33
- def freeze
34
- case __getobj__
35
- when ActiveRecord::Relation
36
- # avoid ActiveRecord::Relation is frozen
37
- else
38
- super
39
- end
40
- end
41
-
42
35
  private
43
36
 
44
37
  def _convert(cskeys)
@@ -50,11 +43,14 @@ module Komagire
50
43
  end
51
44
 
52
45
  def _find_by_cskeys
53
- values = content_class_name.constantize.where(@attribute => _keys).compact
46
+ keys = _keys
47
+ return [] if keys.empty?
48
+
49
+ values = content_class_name.constantize.where(@attribute => keys).compact
54
50
  if @sort
55
51
  values.sort_by { |v| v.public_send(@attribute) }
56
52
  else
57
- values.index_by { |v| v.public_send(@attribute).to_s }.values_at(*_keys)
53
+ values.index_by { |v| v.public_send(@attribute).to_s }.values_at(*keys)
58
54
  end
59
55
  end
60
56
 
@@ -79,27 +75,26 @@ module Komagire
79
75
  if value.content_class_name == content_class_name && value.attribute == attribute
80
76
  return value.cskeys
81
77
  end
82
- fail DifferentContentClass
78
+
79
+ raise DifferentContentClass
83
80
  else
84
- values = case
85
- when value.is_a?(Array) then value
86
- when value.respond_to?(:to_a) then value.to_a
87
- when value.respond_to?(:to_ary) then value.to_ary
81
+ values = if value.is_a?(Array) then value
82
+ elsif value.respond_to?(:to_a) then value.to_a
83
+ elsif value.respond_to?(:to_ary) then value.to_ary
88
84
  else
89
- fail ArgumentError
85
+ raise ArgumentError
90
86
  end
91
87
  convert_to_cskeys_from_array(values.compact)
92
88
  end
93
89
  end
94
90
 
95
91
  def convert_to_cskeys_from_array(values)
96
- case
97
- when values.all? { |v| v.is_a?(String) }
92
+ if values.all? { |v| v.is_a?(String) }
98
93
  values.join(delimiter)
99
- when values.all? { |v| v.is_a?(content_class_name.constantize) }
94
+ elsif values.all? { |v| v.is_a?(content_class_name.constantize) }
100
95
  values.map(&attribute).join(delimiter)
101
96
  else
102
- fail ArgumentError
97
+ raise ArgumentError
103
98
  end
104
99
  end
105
100
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Komagire
2
4
  class Railtie < Rails::Railtie
3
5
  initializer 'komagire' do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Komagire
2
- VERSION = '0.2.2'
4
+ VERSION = '0.6.0'
3
5
  end
data/lib/komagire.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'komagire/version'
2
4
  require 'komagire/key_list'
3
5
  require 'komagire/id_list'
metadata CHANGED
@@ -1,23 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: komagire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takumi IINO
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-27 00:00:00.000000000 Z
11
+ date: 2021-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '4.0'
20
- - - "<"
21
18
  - !ruby/object:Gem::Version
22
19
  version: '5.2'
23
20
  type: :runtime
@@ -25,19 +22,13 @@ dependencies:
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '4.0'
30
- - - "<"
31
25
  - !ruby/object:Gem::Version
32
26
  version: '5.2'
33
27
  - !ruby/object:Gem::Dependency
34
- name: activerecord
28
+ name: activesupport
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '4.0'
40
- - - "<"
41
32
  - !ruby/object:Gem::Version
42
33
  version: '5.2'
43
34
  type: :runtime
@@ -45,9 +36,6 @@ dependencies:
45
36
  version_requirements: !ruby/object:Gem::Requirement
46
37
  requirements:
47
38
  - - ">="
48
- - !ruby/object:Gem::Version
49
- version: '4.0'
50
- - - "<"
51
39
  - !ruby/object:Gem::Version
52
40
  version: '5.2'
53
41
  - !ruby/object:Gem::Dependency
@@ -64,32 +52,46 @@ dependencies:
64
52
  - - ">="
65
53
  - !ruby/object:Gem::Version
66
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: appraisal
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 2.4.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 2.4.1
67
69
  - !ruby/object:Gem::Dependency
68
70
  name: bundler
69
71
  requirement: !ruby/object:Gem::Requirement
70
72
  requirements:
71
- - - "~>"
73
+ - - ">="
72
74
  - !ruby/object:Gem::Version
73
- version: '1.10'
75
+ version: '1.16'
74
76
  type: :development
75
77
  prerelease: false
76
78
  version_requirements: !ruby/object:Gem::Requirement
77
79
  requirements:
78
- - - "~>"
80
+ - - ">="
79
81
  - !ruby/object:Gem::Version
80
- version: '1.10'
82
+ version: '1.16'
81
83
  - !ruby/object:Gem::Dependency
82
84
  name: rake
83
85
  requirement: !ruby/object:Gem::Requirement
84
86
  requirements:
85
- - - "~>"
87
+ - - ">="
86
88
  - !ruby/object:Gem::Version
87
89
  version: '10.0'
88
90
  type: :development
89
91
  prerelease: false
90
92
  version_requirements: !ruby/object:Gem::Requirement
91
93
  requirements:
92
- - - "~>"
94
+ - - ">="
93
95
  - !ruby/object:Gem::Version
94
96
  version: '10.0'
95
97
  - !ruby/object:Gem::Dependency
@@ -141,9 +143,10 @@ executables: []
141
143
  extensions: []
142
144
  extra_rdoc_files: []
143
145
  files:
146
+ - ".github/workflows/ruby.yml"
144
147
  - ".gitignore"
145
148
  - ".rspec"
146
- - ".travis.yml"
149
+ - Appraisals
147
150
  - CHANGELOG.md
148
151
  - CODE_OF_CONDUCT.md
149
152
  - Gemfile
@@ -152,11 +155,10 @@ files:
152
155
  - Rakefile
153
156
  - bin/console
154
157
  - bin/setup
155
- - gemfiles/rails_4.0.gemfile
156
- - gemfiles/rails_4.1.gemfile
157
- - gemfiles/rails_4.2.gemfile
158
- - gemfiles/rails_5.0.gemfile
159
- - gemfiles/rails_5.1.gemfile
158
+ - gemfiles/rails_5.2.gemfile
159
+ - gemfiles/rails_6.0.gemfile
160
+ - gemfiles/rails_6.1.gemfile
161
+ - gemfiles/rails_7.0.gemfile
160
162
  - komagire.gemspec
161
163
  - lib/komagire.rb
162
164
  - lib/komagire/active_record_extension.rb
@@ -168,7 +170,7 @@ homepage: https://github.com/troter/komagire
168
170
  licenses:
169
171
  - MIT
170
172
  metadata: {}
171
- post_install_message:
173
+ post_install_message:
172
174
  rdoc_options: []
173
175
  require_paths:
174
176
  - lib
@@ -176,16 +178,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
178
  requirements:
177
179
  - - ">="
178
180
  - !ruby/object:Gem::Version
179
- version: 2.0.0
181
+ version: 2.6.0
180
182
  required_rubygems_version: !ruby/object:Gem::Requirement
181
183
  requirements:
182
184
  - - ">="
183
185
  - !ruby/object:Gem::Version
184
186
  version: '0'
185
187
  requirements: []
186
- rubyforge_project:
187
- rubygems_version: 2.6.11
188
- signing_key:
188
+ rubygems_version: 3.1.2
189
+ signing_key:
189
190
  specification_version: 4
190
191
  summary: Compose an object from comma separated keys.
191
192
  test_files: []
data/.travis.yml DELETED
@@ -1,31 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.0.0
4
- - 2.1.0
5
- - 2.2.2
6
- - 2.3.0
7
- - 2.4.0
8
- gemfile:
9
- - gemfiles/rails_4.0.gemfile
10
- - gemfiles/rails_4.1.gemfile
11
- - gemfiles/rails_4.2.gemfile
12
- - gemfiles/rails_5.0.gemfile
13
- - gemfiles/rails_5.1.gemfile
14
- matrix:
15
- exclude:
16
- - rvm: 2.0.0
17
- gemfile: gemfiles/rails_5.0.gemfile
18
- - rvm: 2.0.0
19
- gemfile: gemfiles/rails_5.1.gemfile
20
- - rvm: 2.1.0
21
- gemfile: gemfiles/rails_5.0.gemfile
22
- - rvm: 2.1.0
23
- gemfile: gemfiles/rails_5.1.gemfile
24
- - rvm: 2.4.0
25
- gemfile: gemfiles/rails_4.0.gemfile
26
- - rvm: 2.4.0
27
- gemfile: gemfiles/rails_4.1.gemfile
28
- before_install: gem install bundler -v 1.10.5
29
- script:
30
- - bundle install
31
- - bundle exec rake spec
@@ -1,6 +0,0 @@
1
- source 'http://rubygems.org/'
2
-
3
- gem 'activerecord', '~> 4.0.0'
4
- gem 'activesupport', '~> 4.0.0'
5
-
6
- gemspec :path => '../'
@@ -1,6 +0,0 @@
1
- source 'http://rubygems.org/'
2
-
3
- gem 'activerecord', '~> 4.1.0'
4
- gem 'activesupport', '~> 4.1.0'
5
-
6
- gemspec :path => '../'
@@ -1,6 +0,0 @@
1
- source 'http://rubygems.org/'
2
-
3
- gem 'activerecord', '~> 4.2.0'
4
- gem 'activesupport', '~> 4.2.0'
5
-
6
- gemspec :path => '../'
@@ -1,6 +0,0 @@
1
- source 'http://rubygems.org/'
2
-
3
- gem 'activerecord', '~> 5.0.0'
4
- gem 'activesupport', '~> 5.0.0'
5
-
6
- gemspec :path => '../'
@@ -1,6 +0,0 @@
1
- source 'http://rubygems.org/'
2
-
3
- gem 'activerecord', '~> 5.1.0'
4
- gem 'activesupport', '~> 5.1.0'
5
-
6
- gemspec :path => '../'