komagire 0.2.2 → 0.6.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
- 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 => '../'