imyou 1.4.2 → 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: 895224d01d27525ee70e4258e8cb72fe464d7c67e4f8dd89963338390531068c
4
- data.tar.gz: 489c95849694b08a8a8debf28ea3a82e84ab396394e5d6e1321844b61657832f
3
+ metadata.gz: 278f2d48be71f012125f73bbbabeff323db5f293666bfe9dc59255faa7a33b86
4
+ data.tar.gz: c3f3e7024e7c8264ecdc2bcda662b69e743d67a0e0f1becacf1588eff67f4a4f
5
5
  SHA512:
6
- metadata.gz: 4cc1d616d1b96b4421c11ae15855fac651153448dd53a6287ff26a35f5cdddd7aa33da57480c6d68642deb1219ef504b02bd732afc97e05cceafdca88e2f4b29
7
- data.tar.gz: 55090d4bfa282ff8a1c79a470b8f06c9bc74740a7b8bc6b72b3d15961c9ca41a9e635205bd8022cb7ae266690519519d1a6baa397b3d61ec68961cd370c88def
6
+ metadata.gz: 0a09ba720d0328aa1c6c1406dd53b6941c4364b0e8fe0d5f7c4ca2f6be620469639f88f6fd5cd17d0c14bec33889287493f7f6ddcc9741287516f239e4e4fa14
7
+ data.tar.gz: ddd0916204db55c4b0f377616b06fb55a9d53b10e3562ab7f466379d89249d3c801b2861ef25eb667e3a36a6889831ed093b79480cb7715911936bbaa68c75a5
@@ -0,0 +1,30 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ build:
8
+ name: Build + Publish
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ packages: write
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - name: Set up Ruby
17
+ uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: "3.1"
20
+
21
+ - name: Publish to RubyGems
22
+ run: |
23
+ mkdir -p $HOME/.gem
24
+ touch $HOME/.gem/credentials
25
+ chmod 0600 $HOME/.gem/credentials
26
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
27
+ gem build *.gemspec
28
+ gem push *.gem
29
+ env:
30
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -0,0 +1,62 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
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
+ exclude:
17
+ - ruby: '2.6'
18
+ gemfile: 'rails_7.0'
19
+ - ruby: '2.6'
20
+ gemfile: 'rails_7.1'
21
+ - ruby: '3.0'
22
+ gemfile: 'rails_5.0'
23
+ - ruby: '3.0'
24
+ gemfile: 'rails_5.1'
25
+ - ruby: '3.0'
26
+ gemfile: 'rails_5.2'
27
+ - ruby: '3.1'
28
+ gemfile: 'rails_5.0'
29
+ - ruby: '3.1'
30
+ gemfile: 'rails_5.1'
31
+ - ruby: '3.1'
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'
51
+ env:
52
+ BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
53
+
54
+ steps:
55
+ - uses: actions/checkout@v2
56
+ - name: Set up Ruby
57
+ uses: ruby/setup-ruby@v1
58
+ with:
59
+ ruby-version: ${{ matrix.ruby }}
60
+ bundler-cache: true
61
+ - name: Run tests
62
+ run: bundle exec rake
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,9 +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
7
-
8
- gem 'rails'
9
- gem 'sqlite3'
data/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # Imyou
2
2
 
3
- [![CircleCI](https://circleci.com/gh/patorash/imyou.svg?style=svg)](https://circleci.com/gh/patorash/imyou)
3
+ [![Test](https://github.com/patorash/imyou/actions/workflows/test.yml/badge.svg)](https://github.com/patorash/imyou/actions/workflows/test.yml)
4
4
 
5
5
  Imyou has feature of attaching popular name to ActiveRecord model.
6
6
 
7
- Imyou mean nickname in japanease.
7
+ Imyou mean nickname in japanese.
8
8
 
9
9
  ## Installation
10
10
 
11
- ### Rails 4.x, 5.x and 6.x
11
+ ### Rails 5.x, 6.x and 7.0.x
12
12
 
13
13
  Add this line to your application's Gemfile:
14
14
 
data/Rakefile CHANGED
@@ -1,6 +1,14 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
3
2
 
4
- RSpec::Core::RakeTask.new(:spec)
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
5
 
6
- task :default => :spec
6
+ task default: [:test]
7
+
8
+ Rake::TestTask.new do |test|
9
+ test.libs << 'lib'
10
+ test.libs << 'test'
11
+ test.test_files = Dir['test/**/*_test.rb']
12
+ test.warning = false
13
+ # test.verbose = true
14
+ end
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
- gem 'rails', '~> 5.0.0'
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
- gem 'rails', '~> 5.1.0'
4
- gem 'sqlite3', '~> 1.3.0'
5
+ gem 'activerecord', '~> 5.1.0'
6
+ gem 'sqlite3', '~> 1.4'
5
7
 
6
8
  gemspec path: '../'
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- gem 'rails', '~> 5.2.0'
5
+ gem 'activerecord', '~> 5.2.0'
4
6
  gem 'sqlite3', '~> 1.4'
5
7
 
6
8
  gemspec path: '../'
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- gem 'rails', '~> 6.0.0'
5
+ gem 'activerecord', '~> 6.0.0'
4
6
  gem 'sqlite3', '~> 1.4'
5
7
 
6
8
  gemspec path: '../'
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- gem 'rails', '~> 6.1.0'
5
+ gem 'activerecord', '~> 6.1.0'
4
6
  gem 'sqlite3', '~> 1.4'
5
7
 
6
8
  gemspec path: '../'
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'activerecord', '~> 7.0.1'
6
+ gem 'sqlite3', '~> 1.4'
7
+
8
+ gemspec path: '../'
@@ -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,35 +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 = Gem::Requirement.new("< 3".freeze)
25
+ spec.require_paths = ['lib']
26
+ spec.required_ruby_version = '>= 2.6'
27
27
 
28
- spec.add_development_dependency "bundler", "~> 2.1"
29
- spec.add_development_dependency "rake", "~> 13.0"
30
- spec.add_development_dependency "rspec", "~> 3.0"
31
- spec.add_development_dependency 'pry', '~> 0'
32
- spec.add_development_dependency 'database_cleaner', '~> 1.7'
33
- spec.add_development_dependency 'combustion', '~> 1.0'
34
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
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'
35
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)
117
- true
123
+ imyou_nicknames.replace(array)
118
124
  else
119
- self.imyou_nicknames.find_by(name: nickname)&.destroy!
125
+ imyou_nicknames.find_by(name: nickname)&.destroy!
120
126
  end
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.2"
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,29 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imyou
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
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: 2021-04-01 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
- name: bundler
14
+ name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - "<"
18
+ - !ruby/object:Gem::Version
19
+ version: 7.2.0
20
+ - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: '2.1'
22
+ version: 5.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "<"
28
+ - !ruby/object:Gem::Version
29
+ version: 7.2.0
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
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
20
43
  type: :development
21
44
  prerelease: false
22
45
  version_requirements: !ruby/object:Gem::Requirement
23
46
  requirements:
24
- - - "~>"
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.0'
50
+ - - ">="
25
51
  - !ruby/object:Gem::Version
26
- version: '2.1'
52
+ version: 1.99.0
27
53
  - !ruby/object:Gem::Dependency
28
54
  name: rake
29
55
  requirement: !ruby/object:Gem::Requirement
@@ -39,75 +65,137 @@ dependencies:
39
65
  - !ruby/object:Gem::Version
40
66
  version: '13.0'
41
67
  - !ruby/object:Gem::Dependency
42
- name: rspec
68
+ name: rubocop
43
69
  requirement: !ruby/object:Gem::Requirement
44
70
  requirements:
45
71
  - - "~>"
46
72
  - !ruby/object:Gem::Version
47
- version: '3.0'
73
+ version: '1.24'
48
74
  type: :development
49
75
  prerelease: false
50
76
  version_requirements: !ruby/object:Gem::Requirement
51
77
  requirements:
52
78
  - - "~>"
53
79
  - !ruby/object:Gem::Version
54
- version: '3.0'
80
+ version: '1.24'
55
81
  - !ruby/object:Gem::Dependency
56
- name: pry
82
+ name: rubocop-minitest
57
83
  requirement: !ruby/object:Gem::Requirement
58
84
  requirements:
59
85
  - - "~>"
60
86
  - !ruby/object:Gem::Version
61
- version: '0'
87
+ version: '0.17'
62
88
  type: :development
63
89
  prerelease: false
64
90
  version_requirements: !ruby/object:Gem::Requirement
65
91
  requirements:
66
92
  - - "~>"
67
93
  - !ruby/object:Gem::Version
68
- version: '0'
94
+ version: '0.17'
69
95
  - !ruby/object:Gem::Dependency
70
- name: database_cleaner
96
+ name: rubocop-performance
71
97
  requirement: !ruby/object:Gem::Requirement
72
98
  requirements:
73
99
  - - "~>"
74
100
  - !ruby/object:Gem::Version
75
- version: '1.7'
101
+ version: '1.13'
76
102
  type: :development
77
103
  prerelease: false
78
104
  version_requirements: !ruby/object:Gem::Requirement
79
105
  requirements:
80
106
  - - "~>"
81
107
  - !ruby/object:Gem::Version
82
- version: '1.7'
108
+ version: '1.13'
83
109
  - !ruby/object:Gem::Dependency
84
- name: combustion
110
+ name: rubocop-rake
85
111
  requirement: !ruby/object:Gem::Requirement
86
112
  requirements:
87
113
  - - "~>"
88
114
  - !ruby/object:Gem::Version
89
- version: '1.0'
115
+ version: '0.6'
90
116
  type: :development
91
117
  prerelease: false
92
118
  version_requirements: !ruby/object:Gem::Requirement
93
119
  requirements:
94
120
  - - "~>"
95
121
  - !ruby/object:Gem::Version
96
- version: '1.0'
122
+ version: '0.6'
97
123
  - !ruby/object:Gem::Dependency
98
- name: rspec_junit_formatter
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
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '1.3'
143
+ - !ruby/object:Gem::Dependency
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
99
159
  requirement: !ruby/object:Gem::Requirement
100
160
  requirements:
101
161
  - - "~>"
102
162
  - !ruby/object:Gem::Version
103
- version: 0.4.1
163
+ version: '0.1'
104
164
  type: :development
105
165
  prerelease: false
106
166
  version_requirements: !ruby/object:Gem::Requirement
107
167
  requirements:
108
168
  - - "~>"
109
169
  - !ruby/object:Gem::Version
110
- version: 0.4.1
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
187
+ requirement: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - "~>"
190
+ - !ruby/object:Gem::Version
191
+ version: '0.1'
192
+ type: :development
193
+ prerelease: false
194
+ version_requirements: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - "~>"
197
+ - !ruby/object:Gem::Version
198
+ version: '0.1'
111
199
  description: Imyou has feature of attaching popular name to ActiveRecord model.
112
200
  email:
113
201
  - chariderpato@gmail.com
@@ -115,9 +203,11 @@ executables: []
115
203
  extensions: []
116
204
  extra_rdoc_files: []
117
205
  files:
118
- - ".circleci/config.yml"
206
+ - ".github/workflows/gem-push.yml"
207
+ - ".github/workflows/test.yml"
119
208
  - ".gitignore"
120
- - ".rspec"
209
+ - ".rubocop.yml"
210
+ - ".rubocop_todo.yml"
121
211
  - CODE_OF_CONDUCT.md
122
212
  - Gemfile
123
213
  - LICENSE.txt
@@ -130,6 +220,8 @@ files:
130
220
  - gemfiles/rails_5.2.gemfile
131
221
  - gemfiles/rails_6.0.gemfile
132
222
  - gemfiles/rails_6.1.gemfile
223
+ - gemfiles/rails_7.0.gemfile
224
+ - gemfiles/rails_7.1.gemfile
133
225
  - imyou.gemspec
134
226
  - lib/generators/imyou/migration/migration_generator.rb
135
227
  - lib/generators/imyou/migration/templates/active_record/migration.rb
@@ -140,24 +232,25 @@ files:
140
232
  homepage: https://github.com/patorash/imyou
141
233
  licenses:
142
234
  - MIT
143
- metadata: {}
144
- post_install_message:
235
+ metadata:
236
+ rubygems_mfa_required: 'true'
237
+ post_install_message:
145
238
  rdoc_options: []
146
239
  require_paths:
147
240
  - lib
148
241
  required_ruby_version: !ruby/object:Gem::Requirement
149
242
  requirements:
150
- - - "<"
243
+ - - ">="
151
244
  - !ruby/object:Gem::Version
152
- version: '3'
245
+ version: '2.6'
153
246
  required_rubygems_version: !ruby/object:Gem::Requirement
154
247
  requirements:
155
248
  - - ">="
156
249
  - !ruby/object:Gem::Version
157
250
  version: '0'
158
251
  requirements: []
159
- rubygems_version: 3.1.4
160
- signing_key:
252
+ rubygems_version: 3.3.27
253
+ signing_key:
161
254
  specification_version: 4
162
255
  summary: Imyou has feature of attaching popular name to ActiveRecord model.
163
256
  test_files: []
data/.circleci/config.yml DELETED
@@ -1,199 +0,0 @@
1
- version: 2.1
2
-
3
- executors:
4
- ruby:
5
- parameters:
6
- ruby_version:
7
- default: '2.7.2'
8
- type: enum
9
- enum: ['2.5.8', '2.6.6', '2.7.2']
10
- working_directory: ~/repo
11
- docker:
12
- - image: circleci/ruby:<< parameters.ruby_version >>-node-browsers
13
-
14
- commands:
15
- rspec:
16
- steps:
17
- - run:
18
- name: run tests
19
- command: |
20
- mkdir /tmp/test-results
21
- TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
22
- circleci tests split --split-by=timings)"
23
-
24
- bundle exec rspec \
25
- --format progress \
26
- --format RspecJunitFormatter \
27
- --out /tmp/test-results/rspec.xml \
28
- --format progress \
29
- $TEST_FILES
30
- run_test:
31
- parameters:
32
- rails_version:
33
- default: '6.1'
34
- type: enum
35
- enum: ['5.0', '5.1', '5.2', '6.0', '6.1']
36
- steps:
37
- - checkout
38
- - run: gem install bundler --version=2.1.4 -N
39
- - run:
40
- name: bundle install
41
- command: |
42
- export BUNDLE_GEMFILE=$PWD/gemfiles/rails_<< parameters.rails_version >>.gemfile
43
- bundle check || bundle install --jobs=4 --retry=3
44
- - rspec
45
- # collect reports
46
- - store_test_results:
47
- path: /tmp/test-results
48
- - store_artifacts:
49
- path: /tmp/test-results
50
- destination: test-results
51
-
52
- jobs:
53
- test:
54
- parameters:
55
- ruby_version:
56
- type: enum
57
- enum: ['2.5.8', '2.6.6', '2.7.2']
58
- rails_version:
59
- type: enum
60
- enum: ['5.0', '5.1', '5.2', '6.0', '6.1']
61
- executor:
62
- name: ruby
63
- ruby_version: << parameters.ruby_version >>
64
- parallelism: 1
65
- steps:
66
- - run_test:
67
- rails_version: << parameters.rails_version >>
68
-
69
- release:
70
- executor:
71
- name: ruby
72
- parallelism: 1
73
- steps:
74
- - checkout
75
- - add_ssh_keys:
76
- fingerprints:
77
- - "e7:e8:17:c5:03:05:fd:0c:0e:9b:3b:d3:90:53:c6:5c"
78
- - run: gem install bundler --version=2.1.4 -N
79
- - run:
80
- name: bundle install
81
- command: bundle check || bundle install --jobs=4 --retry=3
82
- - run:
83
- name: RubyGems.org | Set credential
84
- command: |
85
- mkdir -p ~/.gem
86
- echo ":rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
87
- chmod 0600 ~/.gem/credentials
88
- - run:
89
- name: Setup git
90
- command: |
91
- git config push.default current
92
- git config user.email "chariderpato@gmail.com"
93
- git config user.name "patorash"
94
- - run:
95
- name: rake release
96
- command: |
97
- set +e
98
- filename=$(for n in *; do printf '%s\n' "$n"; done | grep gemspec)
99
- gem_name=`ruby -e "require 'rubygems'; spec = Gem::Specification::load('${filename}'); puts spec.name"`
100
- gem_version=`ruby -e "require 'rubygems'; spec = Gem::Specification::load('${filename}'); puts spec.version"`
101
- gem list --prerelease --all --remote $gem_name \
102
- | grep -E "^${gem_name}" \
103
- | sed -e "s/^.*(\(.*\)).*\$/\1/" \
104
- | grep -q -v $gem_version
105
- result=$?
106
- if [ $result = 0 ]; then
107
- bundle exec rake build
108
- bundle exec rake release
109
- fi
110
- - run:
111
- name: Delete credentials
112
- command: |
113
- shred -u ~/.gem/credentials
114
-
115
- workflows:
116
- build:
117
- jobs:
118
- - test:
119
- name: 'Ruby 2.5.8-Rails 5.0'
120
- ruby_version: '2.5.8'
121
- rails_version: '5.0'
122
- - test:
123
- name: 'Ruby 2.6.6-Rails 5.0'
124
- ruby_version: '2.6.6'
125
- rails_version: '5.0'
126
- - test:
127
- name: 'Ruby 2.7.2-Rails 5.0'
128
- ruby_version: '2.7.2'
129
- rails_version: '5.0'
130
- - test:
131
- name: 'Ruby 2.5.8-Rails 5.1'
132
- ruby_version: '2.5.8'
133
- rails_version: '5.1'
134
- - test:
135
- name: 'Ruby 2.6.6-Rails 5.1'
136
- ruby_version: '2.6.6'
137
- rails_version: '5.1'
138
- - test:
139
- name: 'Ruby 2.7.2-Rails 5.1'
140
- ruby_version: '2.7.2'
141
- rails_version: '5.1'
142
- - test:
143
- name: 'Ruby 2.5.8-Rails 5.2'
144
- ruby_version: '2.5.8'
145
- rails_version: '5.2'
146
- - test:
147
- name: 'Ruby 2.6.6-Rails 5.2'
148
- ruby_version: '2.6.6'
149
- rails_version: '5.2'
150
- - test:
151
- name: 'Ruby 2.7.2-Rails 5.2'
152
- ruby_version: '2.7.2'
153
- rails_version: '5.2'
154
- - test:
155
- name: 'Ruby 2.5.8-Rails 6.0'
156
- ruby_version: '2.5.8'
157
- rails_version: '6.0'
158
- - test:
159
- name: 'Ruby 2.6.6-Rails 6.0'
160
- ruby_version: '2.6.6'
161
- rails_version: '6.0'
162
- - test:
163
- name: 'Ruby 2.7.2-Rails 6.0'
164
- ruby_version: '2.7.2'
165
- rails_version: '6.0'
166
- - test:
167
- name: 'Ruby 2.5.8-Rails 6.1'
168
- ruby_version: '2.5.8'
169
- rails_version: '6.1'
170
- - test:
171
- name: 'Ruby 2.6.6-Rails 6.1'
172
- ruby_version: '2.6.6'
173
- rails_version: '6.1'
174
- - test:
175
- name: 'Ruby 2.7.2-Rails 6.1'
176
- ruby_version: '2.7.2'
177
- rails_version: '6.1'
178
- - release:
179
- context:
180
- - rubygems.org
181
- requires:
182
- - 'Ruby 2.5.8-Rails 5.0'
183
- - 'Ruby 2.6.6-Rails 5.0'
184
- - 'Ruby 2.7.2-Rails 5.0'
185
- - 'Ruby 2.5.8-Rails 5.1'
186
- - 'Ruby 2.6.6-Rails 5.1'
187
- - 'Ruby 2.7.2-Rails 5.1'
188
- - 'Ruby 2.5.8-Rails 5.2'
189
- - 'Ruby 2.6.6-Rails 5.2'
190
- - 'Ruby 2.7.2-Rails 5.2'
191
- - 'Ruby 2.5.8-Rails 6.0'
192
- - 'Ruby 2.6.6-Rails 6.0'
193
- - 'Ruby 2.7.2-Rails 6.0'
194
- - 'Ruby 2.5.8-Rails 6.1'
195
- - 'Ruby 2.6.6-Rails 6.1'
196
- - 'Ruby 2.7.2-Rails 6.1'
197
- filters:
198
- branches:
199
- only: master
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper