imyou 1.4.3 → 1.4.4

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: '048993f98ad779b76fdad79e1351535bc3b4cdbd8e58e0d6738ddd9ed9e37515'
4
- data.tar.gz: e4adc9af4260f8beab5cdbd96ce2431ba95ead58ec3598a43b5257055dabec01
3
+ metadata.gz: 278f2d48be71f012125f73bbbabeff323db5f293666bfe9dc59255faa7a33b86
4
+ data.tar.gz: c3f3e7024e7c8264ecdc2bcda662b69e743d67a0e0f1becacf1588eff67f4a4f
5
5
  SHA512:
6
- metadata.gz: 5faaecf9a109d262654d04aa8fe2ce40a3fcbd33efbc2e80eb33accd1a0f8a22ea5cf49b5c8d1e60be7f32a79ddfac60a5ef0edb5b6bd079b43c88c986385915
7
- data.tar.gz: 56ec59c6399031166898b14be1c1442f06afaff159c0bbd0d5d28db9e512b24dc5e63867c914495a58389e35f1567825b09e09357f288e3098e10af674089d52
6
+ metadata.gz: 0a09ba720d0328aa1c6c1406dd53b6941c4364b0e8fe0d5f7c4ca2f6be620469639f88f6fd5cd17d0c14bec33889287493f7f6ddcc9741287516f239e4e4fa14
7
+ data.tar.gz: ddd0916204db55c4b0f377616b06fb55a9d53b10e3562ab7f466379d89249d3c801b2861ef25eb667e3a36a6889831ed093b79480cb7715911936bbaa68c75a5
@@ -12,11 +12,11 @@ jobs:
12
12
  packages: write
13
13
 
14
14
  steps:
15
- - uses: actions/checkout@v2
16
- - name: Set up Ruby 2.6
17
- uses: actions/setup-ruby@v1
15
+ - uses: actions/checkout@v4
16
+ - name: Set up Ruby
17
+ uses: ruby/setup-ruby@v1
18
18
  with:
19
- ruby-version: 2.6.x
19
+ ruby-version: "3.1"
20
20
 
21
21
  - name: Publish to RubyGems
22
22
  run: |
@@ -11,11 +11,13 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby: ['2.6', '2.7', '3.0', '3.1']
15
- gemfile: ['rails_5.0', 'rails_5.1', 'rails_5.2', 'rails_6.0', 'rails_6.1', 'rails_7.0']
14
+ ruby: ['2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4']
15
+ gemfile: ['rails_5.0', 'rails_5.1', 'rails_5.2', 'rails_6.0', 'rails_6.1', 'rails_7.0', 'rails_7.1']
16
16
  exclude:
17
17
  - ruby: '2.6'
18
18
  gemfile: 'rails_7.0'
19
+ - ruby: '2.6'
20
+ gemfile: 'rails_7.1'
19
21
  - ruby: '3.0'
20
22
  gemfile: 'rails_5.0'
21
23
  - ruby: '3.0'
@@ -28,6 +30,24 @@ jobs:
28
30
  gemfile: 'rails_5.1'
29
31
  - ruby: '3.1'
30
32
  gemfile: 'rails_5.2'
33
+ - ruby: '3.2'
34
+ gemfile: 'rails_5.0'
35
+ - ruby: '3.2'
36
+ gemfile: 'rails_5.1'
37
+ - ruby: '3.2'
38
+ gemfile: 'rails_5.2'
39
+ - ruby: '3.3'
40
+ gemfile: 'rails_5.0'
41
+ - ruby: '3.3'
42
+ gemfile: 'rails_5.1'
43
+ - ruby: '3.3'
44
+ gemfile: 'rails_5.2'
45
+ - ruby: '3.4'
46
+ gemfile: 'rails_5.0'
47
+ - ruby: '3.4'
48
+ gemfile: 'rails_5.1'
49
+ - ruby: '3.4'
50
+ gemfile: 'rails_5.2'
31
51
  env:
32
52
  BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
33
53
 
data/.rubocop.yml ADDED
@@ -0,0 +1,43 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ require:
4
+ - rubocop-performance
5
+ - rubocop-rake
6
+ - rubocop-minitest
7
+
8
+ AllCops:
9
+ NewCops: enable
10
+ TargetRubyVersion: 2.6
11
+ Exclude:
12
+ - 'lib/generators/imyou/migration/templates/active_record/migration.rb'
13
+
14
+ Layout/LineLength:
15
+ AllowHeredoc: true
16
+ AllowURI: true
17
+
18
+ Metrics/BlockLength:
19
+ IgnoredMethods:
20
+ - describe
21
+ - refine
22
+ - class_eval
23
+ Exclude:
24
+ - 'lib/imyou/models.rb'
25
+ Layout/DotPosition:
26
+ EnforcedStyle: trailing
27
+
28
+ Style/Documentation:
29
+ Enabled: false
30
+
31
+ Naming/PredicateName:
32
+ AllowedMethods:
33
+ - has_imyou
34
+ - has_imyou?
35
+ Exclude:
36
+ - 'spec/**/*'
37
+
38
+ Metrics/ModuleLength:
39
+ Enabled: false
40
+
41
+ Metrics/MethodLength:
42
+ IgnoredMethods:
43
+ - has_imyou
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,23 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2022-01-14 02:32:22 UTC using RuboCop version 1.24.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
11
+ Metrics/AbcSize:
12
+ Max: 141
13
+
14
+ # Offense count: 1
15
+ # Configuration parameters: IgnoredMethods.
16
+ Metrics/CyclomaticComplexity:
17
+ Max: 22
18
+
19
+
20
+ # Offense count: 1
21
+ # Configuration parameters: IgnoredMethods.
22
+ Metrics/PerceivedComplexity:
23
+ Max: 30
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
6
 
5
7
  # Specify your gem's dependencies in imyou.gemspec
6
8
  gemspec
data/Rakefile CHANGED
@@ -1,7 +1,9 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
2
4
  require 'rake/testtask'
3
5
 
4
- task :default => [:test]
6
+ task default: [:test]
5
7
 
6
8
  Rake::TestTask.new do |test|
7
9
  test.libs << 'lib'
data/bin/console CHANGED
@@ -1,14 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "imyou"
4
+ require 'bundler/setup'
5
+ require 'imyou'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
8
9
 
9
10
  # (If you use this, don't forget to add pry to your Gemfile!)
10
- require "pry"
11
- Pry.start
11
+ # require 'pry'
12
+ # Pry.start
12
13
 
13
- # require "irb"
14
- # IRB.start(__FILE__)
14
+ require "irb"
15
+ IRB.start(__FILE__)
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'activerecord', '~> 5.0.0'
4
6
  gem 'sqlite3', '~> 1.3.0'
7
+ gem 'database_cleaner', '~> 1.99'
5
8
 
6
9
  gemspec path: '../'
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'activerecord', '~> 5.1.0'
4
- gem 'sqlite3', '~> 1.3.0'
6
+ gem 'sqlite3', '~> 1.4'
5
7
 
6
8
  gemspec path: '../'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'activerecord', '~> 5.2.0'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'activerecord', '~> 6.0.0'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'activerecord', '~> 6.1.0'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'activerecord', '~> 7.0.1'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'activerecord', '~> 7.1.3'
6
+
7
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
8
+ gem 'sqlite3', '~> 2.0'
9
+ else
10
+ gem 'sqlite3', '~> 1.4'
11
+ end
12
+
13
+ gemspec path: '../'
data/imyou.gemspec CHANGED
@@ -1,32 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require "imyou/version"
5
+ require 'imyou/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = "imyou"
8
+ spec.name = 'imyou'
9
9
  spec.version = Imyou::VERSION
10
- spec.authors = ["patorash"]
11
- spec.email = ["chariderpato@gmail.com"]
10
+ spec.authors = ['patorash']
11
+ spec.email = ['chariderpato@gmail.com']
12
12
 
13
- spec.summary = %q{Imyou has feature of attaching popular name to ActiveRecord model.}
14
- spec.description = %q{Imyou has feature of attaching popular name to ActiveRecord model.}
15
- spec.homepage = "https://github.com/patorash/imyou"
16
- spec.license = "MIT"
13
+ spec.summary = 'Imyou has feature of attaching popular name to ActiveRecord model.'
14
+ spec.description = 'Imyou has feature of attaching popular name to ActiveRecord model.'
15
+ spec.homepage = 'https://github.com/patorash/imyou'
16
+ spec.license = 'MIT'
17
17
 
18
18
  # Specify which files should be added to the gem when it is released.
19
19
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
21
21
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
22
  end
23
- spec.bindir = "exe"
23
+ spec.bindir = 'exe'
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
- spec.require_paths = ["lib"]
26
- spec.required_ruby_version = '>= 2.5'
25
+ spec.require_paths = ['lib']
26
+ spec.required_ruby_version = '>= 2.6'
27
27
 
28
- spec.add_dependency 'activerecord', '< 7.1.0', '>= 5.0.0'
29
- spec.add_development_dependency "rake", "~> 13.0"
30
- spec.add_development_dependency "sqlite3", '~> 1.3'
31
- spec.add_development_dependency 'database_cleaner', '~> 2.0'
28
+ spec.add_dependency 'activerecord', '< 7.2.0', '>= 5.0.0'
29
+ spec.add_development_dependency 'database_cleaner', '< 3.0', '>= 1.99.0'
30
+ spec.add_development_dependency 'rake', '~> 13.0'
31
+ spec.add_development_dependency 'rubocop', '~> 1.24'
32
+ spec.add_development_dependency 'rubocop-minitest', '~> 0.17'
33
+ spec.add_development_dependency 'rubocop-performance', '~> 1.13'
34
+ spec.add_development_dependency 'rubocop-rake', '~> 0.6'
35
+ spec.add_development_dependency 'sqlite3', '< 3.0', '>= 1.3'
36
+ spec.add_development_dependency 'concurrent-ruby', '1.3.4'
37
+ spec.add_development_dependency 'mutex_m', '~> 0.1'
38
+ spec.add_development_dependency 'bigdecimal', '~> 3.0'
39
+ spec.add_development_dependency 'base64', '~> 0.1'
40
+ spec.metadata['rubygems_mfa_required'] = 'true'
32
41
  end
@@ -1,41 +1,43 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/generators/migration'
2
4
 
3
5
  module Imyou
4
6
  class MigrationGenerator < Rails::Generators::Base
5
7
  include Rails::Generators::Migration
6
8
 
7
- desc "Generators migration for Imyou(imyous table)"
9
+ desc 'Generators migration for Imyou(imyous table)'
8
10
 
9
11
  def self.orm
10
12
  Rails::Generators.options[:rails][:orm]
11
13
  end
12
14
 
13
15
  def self.source_root
14
- File.join(File.dirname(__FILE__), 'templates', (orm.to_s unless orm.class.eql?(String)))
16
+ File.join(File.dirname(__FILE__), 'templates', (orm.to_s unless orm.instance_of?(String)))
15
17
  end
16
18
 
17
19
  def self.orm_has_migration?
18
20
  [:active_record].include? orm
19
21
  end
20
22
 
21
- def self.next_migration_number(path)
22
- Time.now.utc.strftime("%Y%m%d%H%M%S")
23
+ def self.next_migration_number(_path)
24
+ Time.now.utc.strftime('%Y%m%d%H%M%S')
23
25
  end
24
26
 
25
27
  def create_migration_file
26
- if self.class.orm_has_migration?
27
- migration_template 'migration.rb', 'db/migrate/imyou_migration.rb', migration_version: migration_version
28
- end
28
+ return unless self.class.orm_has_migration?
29
+
30
+ migration_template 'migration.rb',
31
+ 'db/migrate/imyou_migration.rb',
32
+ migration_version: migration_version
29
33
  end
30
34
 
31
35
  def migration_version
32
- if over_rails5?
33
- "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
34
- end
36
+ "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]" if over_rails5?
35
37
  end
36
38
 
37
39
  def over_rails5?
38
40
  Rails::VERSION::MAJOR >= 5
39
41
  end
40
42
  end
41
- end
43
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ImyouMigration < ActiveRecord::Migration<%= migration_version %>
2
4
  def self.up
3
5
  create_table :imyou_nicknames do |t|
data/lib/imyou/models.rb CHANGED
@@ -1,13 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Imyou
2
4
  module Models
3
5
  def has_imyou?
4
6
  false
5
7
  end
6
8
 
7
- def has_imyou(name_column=nil)
9
+ def has_imyou(name_column = nil)
8
10
  class_eval do
9
-
10
- has_many :imyou_nicknames, -> { order(id: :asc) }, class_name: 'Imyou::Nickname', as: :model, dependent: :destroy
11
+ has_many :imyou_nicknames, lambda {
12
+ order(id: :asc)
13
+ }, class_name: 'Imyou::Nickname', as: :model, dependent: :destroy
11
14
 
12
15
  accepts_nested_attributes_for :imyou_nicknames,
13
16
  allow_destroy: true,
@@ -15,66 +18,70 @@ module Imyou
15
18
 
16
19
  scope :with_nicknames, -> { preload(:imyou_nicknames) }
17
20
 
18
- scope :match_by_nickname, ->(nickname, with_name_column: true) do
21
+ # 本来はscopeで定義するべきだが、Ruby 3.2以降とActiveRecord 6.1系ではエラーになるため、
22
+ # 苦肉の策で特異メソッドとして定義する。
23
+ # Rails 6.1のサポートを終了したら、scopeに戻すこと。
24
+ # @see https://qiita.com/usk0513/items/c2968733415c806f56fc
25
+ define_singleton_method(:match_by_nickname) do |nickname, with_name_column: true|
19
26
  if Gem::Version.new(ActiveRecord.version) >= Gem::Version.new(5)
20
- records = self.left_outer_joins(:imyou_nicknames).where(Imyou::Nickname.arel_table[:name].eq(nickname))
27
+ records = left_outer_joins(:imyou_nicknames).where(Imyou::Nickname.arel_table[:name].eq(nickname))
21
28
  unless name_column.nil? || with_name_column == false
22
- records.or!(self.left_outer_joins(:imyou_nicknames).where(name_column => nickname))
29
+ records.or!(left_outer_joins(:imyou_nicknames).where(name_column => nickname))
23
30
  end
24
31
  else
25
- joined_records = self.joins(<<~SQL
32
+ joined_records = joins(<<~SQL)
26
33
  LEFT OUTER JOIN #{Imyou::Nickname.quoted_table_name}
27
34
  ON
28
- #{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_id)} = #{self.quoted_table_name}.#{connection.quote_column_name(:id)}
35
+ #{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_id)} = #{quoted_table_name}.#{connection.quote_column_name(:id)}
29
36
  AND
30
- #{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_type)} = #{connection.quote(self.name)}
37
+ #{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_type)} = #{connection.quote(name)}
31
38
  SQL
32
- )
33
39
  arel_nickname_column = Imyou::Nickname.arel_table[:name]
34
40
  records = if name_column.nil? || with_name_column == false
35
41
  joined_records.where(
36
- arel_nickname_column.eq(nickname)
42
+ arel_nickname_column.eq(nickname)
37
43
  )
38
44
  else
39
- arel_name_column = self.arel_table[name_column]
45
+ arel_name_column = arel_table[name_column]
40
46
  joined_records.where(
41
- arel_nickname_column.eq(nickname).or(
42
- arel_name_column.eq(nickname)
43
- )
47
+ arel_nickname_column.eq(nickname).or(
48
+ arel_name_column.eq(nickname)
49
+ )
44
50
  )
45
51
  end
46
52
  end
47
53
  records
48
54
  end
49
55
 
50
- scope :partial_match_by_nickname, ->(nickname, with_name_column: true) do
56
+ define_singleton_method(:partial_match_by_nickname) do |nickname, with_name_column: true|
51
57
  if Gem::Version.new(ActiveRecord.version) >= Gem::Version.new(5)
52
- records = self.left_outer_joins(:imyou_nicknames).where(Imyou::Nickname.arel_table[:name].matches("%#{sanitize_sql_like(nickname)}%", '\\'))
58
+ records = left_outer_joins(:imyou_nicknames).
59
+ where(Imyou::Nickname.arel_table[:name].
60
+ matches("%#{sanitize_sql_like(nickname)}%", '\\'))
53
61
  unless name_column.nil? || with_name_column == false
54
- records.or!(self.left_outer_joins(:imyou_nicknames).where(
55
- self.arel_table[name_column].matches("%#{sanitize_sql_like(nickname)}%", '\\'))
56
- )
62
+ records.or!(left_outer_joins(:imyou_nicknames).where(
63
+ arel_table[name_column].matches("%#{sanitize_sql_like(nickname)}%", '\\')
64
+ ))
57
65
  end
58
66
  else
59
- joined_records = self.joins(<<~SQL
67
+ joined_records = joins(<<~SQL)
60
68
  LEFT OUTER JOIN #{Imyou::Nickname.quoted_table_name}
61
69
  ON
62
- #{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_id)} = #{self.quoted_table_name}.#{connection.quote_column_name(:id)}
70
+ #{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_id)} = #{quoted_table_name}.#{connection.quote_column_name(:id)}
63
71
  AND
64
- #{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_type)} = #{connection.quote(self.name)}
72
+ #{Imyou::Nickname.quoted_table_name}.#{connection.quote_column_name(:model_type)} = #{connection.quote(name)}
65
73
  SQL
66
- )
67
74
  arel_nickname_column = Imyou::Nickname.arel_table[:name]
68
75
  records = if name_column.nil? || with_name_column == false
69
76
  joined_records.where(
70
- arel_nickname_column.matches("%#{sanitize_sql_like(nickname)}%", '\\')
77
+ arel_nickname_column.matches("%#{sanitize_sql_like(nickname)}%", '\\')
71
78
  )
72
79
  else
73
- arel_name_column = self.arel_table[name_column]
80
+ arel_name_column = arel_table[name_column]
74
81
  joined_records.where(
75
- arel_nickname_column.matches("%#{sanitize_sql_like(nickname)}%", '\\').or(
76
- arel_name_column.matches("%#{sanitize_sql_like(nickname)}%", '\\')
77
- )
82
+ arel_nickname_column.matches("%#{sanitize_sql_like(nickname)}%", '\\').or(
83
+ arel_name_column.matches("%#{sanitize_sql_like(nickname)}%", '\\')
84
+ )
78
85
  )
79
86
  end
80
87
  end
@@ -90,51 +97,47 @@ module Imyou
90
97
 
91
98
  def nicknames
92
99
  if new_record?
93
- self.imyou_nicknames.map(&:name)
100
+ imyou_nicknames.map(&:name)
94
101
  else
95
- self.imyou_nicknames.pluck(:name)
102
+ imyou_nicknames.pluck(:name)
96
103
  end
97
104
  end
98
105
 
99
106
  def remove_all_nicknames
100
- self.imyou_nicknames.delete_all
107
+ imyou_nicknames.delete_all
101
108
  end
102
109
 
103
110
  def add_nickname(nickname)
104
111
  if new_record?
105
- self.imyou_nicknames.build(name: nickname)
112
+ imyou_nicknames.build(name: nickname)
106
113
  else
107
- self.imyou_nicknames.find_or_create_by(name: nickname)
114
+ imyou_nicknames.find_or_create_by(name: nickname)
108
115
  end
109
116
  end
110
117
 
111
118
  def remove_nickname(nickname)
112
119
  if new_record?
113
- array = self.imyou_nicknames.to_a.delete_if do |imyou_nickname|
120
+ array = imyou_nicknames.to_a.delete_if do |imyou_nickname|
114
121
  imyou_nickname.name == nickname
115
122
  end
116
- self.imyou_nicknames.replace(array)
123
+ imyou_nicknames.replace(array)
117
124
  else
118
- self.imyou_nicknames.find_by(name: nickname)&.destroy!
125
+ imyou_nicknames.find_by(name: nickname)&.destroy!
119
126
  end
120
127
  true
121
128
  end
122
129
 
123
130
  def nicknames=(new_nicknames)
124
131
  if new_record?
125
- new_nicknames&.each do |new_nickname|
126
- self.imyou_nicknames.build(name: new_nickname)
127
- end
132
+ new_nicknames&.each { |new_nickname| imyou_nicknames.build(name: new_nickname) }
128
133
  elsif new_nicknames.blank?
129
- self.remove_all_nicknames
134
+ remove_all_nicknames
130
135
  else
131
- self.imyou_nicknames.where.not(name: new_nicknames).delete_all
132
- new_nicknames.each do |new_nickname|
133
- self.imyou_nicknames.find_or_create_by(name: new_nickname)
134
- end
136
+ imyou_nicknames.where.not(name: new_nicknames).delete_all
137
+ new_nicknames.each { |new_nickname| imyou_nicknames.find_or_create_by(name: new_nickname) }
135
138
  end
136
139
  end
137
140
  end
138
141
  end
139
142
  end
140
- end
143
+ end
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Imyou
2
4
  class Nickname < ::ActiveRecord::Base
3
5
  self.table_name = 'imyou_nicknames'
4
6
  belongs_to :model, polymorphic: true
5
7
 
6
- scope :by_type, -> (klass) { where(model_type: klass.name) }
8
+ scope :by_type, ->(klass) { where(model_type: klass.name) }
7
9
  scope :default_order, -> { order(id: :asc) }
8
10
  default_scope { default_order }
9
11
 
10
12
  validates :name, presence: true
11
- validates_uniqueness_of :name, scope: [ :model_id, :model_type ]
13
+ validates_uniqueness_of :name, scope: %i[model_id model_type]
12
14
  end
13
- end
15
+ end
data/lib/imyou/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Imyou
2
- VERSION = "1.4.3"
4
+ VERSION = '1.4.4'
3
5
  end
data/lib/imyou.rb CHANGED
@@ -1,4 +1,6 @@
1
- require "imyou/version"
1
+ # frozen_string_literal: true
2
+
3
+ require 'imyou/version'
2
4
  require 'active_record'
3
5
  require 'active_support/inflector'
4
6
 
metadata CHANGED
@@ -1,35 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imyou
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - patorash
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-11 00:00:00.000000000 Z
11
+ date: 2025-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "<"
18
+ - !ruby/object:Gem::Version
19
+ version: 7.2.0
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
22
  version: 5.0.0
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: 7.1.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
+ - - "<"
28
+ - !ruby/object:Gem::Version
29
+ version: 7.2.0
27
30
  - - ">="
28
31
  - !ruby/object:Gem::Version
29
32
  version: 5.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: database_cleaner
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "<"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.99.0
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
30
47
  - - "<"
31
48
  - !ruby/object:Gem::Version
32
- version: 7.1.0
49
+ version: '3.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.99.0
33
53
  - !ruby/object:Gem::Dependency
34
54
  name: rake
35
55
  requirement: !ruby/object:Gem::Requirement
@@ -45,33 +65,137 @@ dependencies:
45
65
  - !ruby/object:Gem::Version
46
66
  version: '13.0'
47
67
  - !ruby/object:Gem::Dependency
48
- name: sqlite3
68
+ name: rubocop
49
69
  requirement: !ruby/object:Gem::Requirement
50
70
  requirements:
51
71
  - - "~>"
52
72
  - !ruby/object:Gem::Version
53
- version: '1.3'
73
+ version: '1.24'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.24'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rubocop-minitest
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '0.17'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '0.17'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rubocop-performance
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.13'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.13'
109
+ - !ruby/object:Gem::Dependency
110
+ name: rubocop-rake
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.6'
54
116
  type: :development
55
117
  prerelease: false
56
118
  version_requirements: !ruby/object:Gem::Requirement
57
119
  requirements:
58
120
  - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '0.6'
123
+ - !ruby/object:Gem::Dependency
124
+ name: sqlite3
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "<"
128
+ - !ruby/object:Gem::Version
129
+ version: '3.0'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '1.3'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "<"
138
+ - !ruby/object:Gem::Version
139
+ version: '3.0'
140
+ - - ">="
59
141
  - !ruby/object:Gem::Version
60
142
  version: '1.3'
61
143
  - !ruby/object:Gem::Dependency
62
- name: database_cleaner
144
+ name: concurrent-ruby
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - '='
148
+ - !ruby/object:Gem::Version
149
+ version: 1.3.4
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - '='
155
+ - !ruby/object:Gem::Version
156
+ version: 1.3.4
157
+ - !ruby/object:Gem::Dependency
158
+ name: mutex_m
159
+ requirement: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - "~>"
162
+ - !ruby/object:Gem::Version
163
+ version: '0.1'
164
+ type: :development
165
+ prerelease: false
166
+ version_requirements: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - "~>"
169
+ - !ruby/object:Gem::Version
170
+ version: '0.1'
171
+ - !ruby/object:Gem::Dependency
172
+ name: bigdecimal
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - "~>"
176
+ - !ruby/object:Gem::Version
177
+ version: '3.0'
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - "~>"
183
+ - !ruby/object:Gem::Version
184
+ version: '3.0'
185
+ - !ruby/object:Gem::Dependency
186
+ name: base64
63
187
  requirement: !ruby/object:Gem::Requirement
64
188
  requirements:
65
189
  - - "~>"
66
190
  - !ruby/object:Gem::Version
67
- version: '2.0'
191
+ version: '0.1'
68
192
  type: :development
69
193
  prerelease: false
70
194
  version_requirements: !ruby/object:Gem::Requirement
71
195
  requirements:
72
196
  - - "~>"
73
197
  - !ruby/object:Gem::Version
74
- version: '2.0'
198
+ version: '0.1'
75
199
  description: Imyou has feature of attaching popular name to ActiveRecord model.
76
200
  email:
77
201
  - chariderpato@gmail.com
@@ -82,6 +206,8 @@ files:
82
206
  - ".github/workflows/gem-push.yml"
83
207
  - ".github/workflows/test.yml"
84
208
  - ".gitignore"
209
+ - ".rubocop.yml"
210
+ - ".rubocop_todo.yml"
85
211
  - CODE_OF_CONDUCT.md
86
212
  - Gemfile
87
213
  - LICENSE.txt
@@ -95,6 +221,7 @@ files:
95
221
  - gemfiles/rails_6.0.gemfile
96
222
  - gemfiles/rails_6.1.gemfile
97
223
  - gemfiles/rails_7.0.gemfile
224
+ - gemfiles/rails_7.1.gemfile
98
225
  - imyou.gemspec
99
226
  - lib/generators/imyou/migration/migration_generator.rb
100
227
  - lib/generators/imyou/migration/templates/active_record/migration.rb
@@ -105,8 +232,9 @@ files:
105
232
  homepage: https://github.com/patorash/imyou
106
233
  licenses:
107
234
  - MIT
108
- metadata: {}
109
- post_install_message:
235
+ metadata:
236
+ rubygems_mfa_required: 'true'
237
+ post_install_message:
110
238
  rdoc_options: []
111
239
  require_paths:
112
240
  - lib
@@ -114,15 +242,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
242
  requirements:
115
243
  - - ">="
116
244
  - !ruby/object:Gem::Version
117
- version: '2.5'
245
+ version: '2.6'
118
246
  required_rubygems_version: !ruby/object:Gem::Requirement
119
247
  requirements:
120
248
  - - ">="
121
249
  - !ruby/object:Gem::Version
122
250
  version: '0'
123
251
  requirements: []
124
- rubygems_version: 3.0.3.1
125
- signing_key:
252
+ rubygems_version: 3.3.27
253
+ signing_key:
126
254
  specification_version: 4
127
255
  summary: Imyou has feature of attaching popular name to ActiveRecord model.
128
256
  test_files: []