From d5d054fe971741a002cfa5bf8d7708b37cab762b Mon Sep 17 00:00:00 2001 From: Nikolay Sverchkov Date: Sun, 31 Oct 2021 12:55:47 +0300 Subject: [PATCH 1/3] Up Rubocop & Standard versions --- clowne.gemspec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clowne.gemspec b/clowne.gemspec index 558cbcb..8e7df00 100644 --- a/clowne.gemspec +++ b/clowne.gemspec @@ -29,8 +29,8 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.3' spec.add_development_dependency 'rspec', '~> 3.0' spec.add_development_dependency 'factory_bot', '~> 5' - spec.add_development_dependency 'rubocop', '~> 0.75.0' - spec.add_development_dependency 'rubocop-md', '~> 0.3.0' - spec.add_development_dependency 'rubocop-rspec', '~> 1.36.0' - spec.add_development_dependency 'standard', '~> 0.1.5' + spec.add_development_dependency 'rubocop', '~> 1.22' + spec.add_development_dependency 'rubocop-md', '~> 1' + spec.add_development_dependency 'rubocop-rspec', '~> 2.5' + spec.add_development_dependency 'standard', '~> 1.4.0' end From 6027473e730f93ed9497776af8ea0a43bd019032 Mon Sep 17 00:00:00 2001 From: Nikolay Sverchkov Date: Sun, 31 Oct 2021 12:55:59 +0300 Subject: [PATCH 2/3] Fix new version offences --- .rubocop.yml | 9 +++--- docs/.rubocop.yml | 5 +--- docs/parameters.md | 2 +- lib/clowne.rb | 5 ++-- .../adapters/active_record/associations.rb | 2 +- .../active_record/associations/belongs_to.rb | 1 - .../active_record/associations/has_one.rb | 1 - .../active_record/resolvers/association.rb | 1 - lib/clowne/adapters/sequel/associations.rb | 2 +- .../adapters/sequel/resolvers/association.rb | 1 - lib/clowne/cloner.rb | 2 +- lib/clowne/declarations.rb | 2 +- lib/clowne/declarations/trait.rb | 2 +- lib/clowne/ext/yield_self_then.rb | 2 +- lib/clowne/resolvers/init_as.rb | 1 - lib/clowne/rspec/clone_association.rb | 1 - spec/clowne/adapters/base/association_spec.rb | 2 +- spec/clowne/cloner_spec.rb | 28 +++++++++---------- .../integrations/adapter_lifecycle_spec.rb | 1 - .../clowne/integrations/after_persist_spec.rb | 1 - spec/clowne/planner_spec.rb | 14 +++++----- spec/clowne/utils/params_spec.rb | 2 +- spec/clowne/utils/plan_spec.rb | 8 +++--- spec/spec_helper.rb | 4 +-- spec/support/active_record/initializer.rb | 4 +-- spec/support/sequel/initializer.rb | 4 +-- 26 files changed, 48 insertions(+), 59 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index bc8cc30..0301eb8 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,6 +1,6 @@ require: # add after moving docs to another tool - - 'standard/cop/semantic_blocks' + - 'standard/cop/block_single_line_braces' - 'rubocop-md' inherit_gem: @@ -19,10 +19,11 @@ AllCops: Markdown: WarnInvalid: true -Standard/SemanticBlocks: - Enabled: false - Lint/Void: Exclude: - 'docs/README.md' - 'README.md' + +Lint/ConstantDefinitionInBlock: + Exclude: + - 'spec/**/*' diff --git a/docs/.rubocop.yml b/docs/.rubocop.yml index c04c530..81ce83f 100644 --- a/docs/.rubocop.yml +++ b/docs/.rubocop.yml @@ -8,11 +8,8 @@ Lint/Void: Metrics/AbcSize: Enabled: false -Standard/SemanticBlocks: - Enabled: false - Metrics/BlockLength: Enabled: false -Metrics/LineLength: +Layout/LineLength: Enabled: false diff --git a/docs/parameters.md b/docs/parameters.md index 7eddf19..b61b73d 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -75,7 +75,7 @@ class UserCloner < Clowne::Cloner include_association :profile, params: Proc.new do |params, user| { name: params[:profile][:name], - email: user.email, + email: user.email } end end diff --git a/lib/clowne.rb b/lib/clowne.rb index 48cf450..85ea46a 100644 --- a/lib/clowne.rb +++ b/lib/clowne.rb @@ -9,11 +9,10 @@ # Declarative models cloning module Clowne # List of built-in adapters - # rubocop:disable Layout/AlignHash ADAPTERS = { - base: "Base", + base: "Base", active_record: "ActiveRecord", - sequel: "Sequel", + sequel: "Sequel" }.freeze # rubocop:enable Layout/AlignHash diff --git a/lib/clowne/adapters/active_record/associations.rb b/lib/clowne/adapters/active_record/associations.rb index 8c2016b..db851df 100644 --- a/lib/clowne/adapters/active_record/associations.rb +++ b/lib/clowne/adapters/active_record/associations.rb @@ -15,7 +15,7 @@ module Associations belongs_to: BelongsTo, has_one: HasOne, has_many: HasMany, - has_and_belongs_to_many: HABTM, + has_and_belongs_to_many: HABTM }.freeze # Returns an association cloner class for reflection diff --git a/lib/clowne/adapters/active_record/associations/belongs_to.rb b/lib/clowne/adapters/active_record/associations/belongs_to.rb index c9aabb2..735a84e 100644 --- a/lib/clowne/adapters/active_record/associations/belongs_to.rb +++ b/lib/clowne/adapters/active_record/associations/belongs_to.rb @@ -5,7 +5,6 @@ module Adapters # :nodoc: all class ActiveRecord module Associations class BelongsTo < Base - # rubocop: disable Metrics/MethodLength def call(record) child = association return record unless child diff --git a/lib/clowne/adapters/active_record/associations/has_one.rb b/lib/clowne/adapters/active_record/associations/has_one.rb index 4741ab3..ff4abf8 100644 --- a/lib/clowne/adapters/active_record/associations/has_one.rb +++ b/lib/clowne/adapters/active_record/associations/has_one.rb @@ -5,7 +5,6 @@ module Adapters # :nodoc: all class ActiveRecord module Associations class HasOne < Base - # rubocop: disable Metrics/MethodLength def call(record) child = association return record unless child diff --git a/lib/clowne/adapters/active_record/resolvers/association.rb b/lib/clowne/adapters/active_record/resolvers/association.rb index 1a9f6ae..467db9f 100644 --- a/lib/clowne/adapters/active_record/resolvers/association.rb +++ b/lib/clowne/adapters/active_record/resolvers/association.rb @@ -8,7 +8,6 @@ class UnknownAssociation < StandardError; end class Association class << self - # rubocop: disable Metrics/ParameterLists def call(source, record, declaration, adapter:, params:, **_options) reflection = source.class.reflections[declaration.name.to_s] diff --git a/lib/clowne/adapters/sequel/associations.rb b/lib/clowne/adapters/sequel/associations.rb index 122f16d..17f7b08 100644 --- a/lib/clowne/adapters/sequel/associations.rb +++ b/lib/clowne/adapters/sequel/associations.rb @@ -13,7 +13,7 @@ module Associations SEQUEL_2_CLONER = { one_to_one: OneToOne, one_to_many: OneToMany, - many_to_many: ManyToMany, + many_to_many: ManyToMany }.freeze # Returns an association cloner class for reflection diff --git a/lib/clowne/adapters/sequel/resolvers/association.rb b/lib/clowne/adapters/sequel/resolvers/association.rb index ef79771..1310bd0 100644 --- a/lib/clowne/adapters/sequel/resolvers/association.rb +++ b/lib/clowne/adapters/sequel/resolvers/association.rb @@ -6,7 +6,6 @@ class Sequel module Resolvers class Association class << self - # rubocop: disable Metrics/ParameterLists def call(source, record, declaration, adapter:, params:, **_options) with_clonable(source, record, declaration) do reflection = source.class.association_reflections[declaration.name.to_sym] diff --git a/lib/clowne/cloner.rb b/lib/clowne/cloner.rb index bff1148..08ab947 100644 --- a/lib/clowne/cloner.rb +++ b/lib/clowne/cloner.rb @@ -8,6 +8,7 @@ module Clowne # :nodoc: all class UnprocessableSourceError < StandardError; end + class ConfigurationError < StandardError; end class Cloner @@ -43,7 +44,6 @@ def register_trait(name, block) @traits[name].extend_with(block) end - # rubocop: disable Metrics/AbcSize, Metrics/MethodLength def call(object, **options, &block) raise(UnprocessableSourceError, "Nil is not cloneable object") if object.nil? diff --git a/lib/clowne/declarations.rb b/lib/clowne/declarations.rb index ccfa9ea..029aeff 100644 --- a/lib/clowne/declarations.rb +++ b/lib/clowne/declarations.rb @@ -8,7 +8,7 @@ module Declarations # :nodoc: module_function def add(id, declaration = nil, &block) - declaration = block if block_given? + declaration = block if block if declaration.is_a?(Class) DSL.send(:define_method, id) do |*args, **hargs, &inner_block| diff --git a/lib/clowne/declarations/trait.rb b/lib/clowne/declarations/trait.rb index f7c07c3..04c07b4 100644 --- a/lib/clowne/declarations/trait.rb +++ b/lib/clowne/declarations/trait.rb @@ -17,7 +17,7 @@ def compiled @compiled = compile end - alias declarations compiled + alias_method :declarations, :compiled def dup self.class.new.tap do |duped| diff --git a/lib/clowne/ext/yield_self_then.rb b/lib/clowne/ext/yield_self_then.rb index 9b855aa..57c40aa 100644 --- a/lib/clowne/ext/yield_self_then.rb +++ b/lib/clowne/ext/yield_self_then.rb @@ -11,7 +11,7 @@ def yield_self end end - alias then yield_self + alias_method :then, :yield_self end # See https://github.com/jruby/jruby/issues/5220 diff --git a/lib/clowne/resolvers/init_as.rb b/lib/clowne/resolvers/init_as.rb index eb21999..4938823 100644 --- a/lib/clowne/resolvers/init_as.rb +++ b/lib/clowne/resolvers/init_as.rb @@ -3,7 +3,6 @@ module Clowne class Resolvers module InitAs # :nodoc: all - # rubocop: disable Metrics/ParameterLists def self.call(source, _record, declaration, params:, adapter:, **_options) adapter.init_record(declaration.block.call(source, **params)) end diff --git a/lib/clowne/rspec/clone_association.rb b/lib/clowne/rspec/clone_association.rb index e946b2d..32c46eb 100644 --- a/lib/clowne/rspec/clone_association.rb +++ b/lib/clowne/rspec/clone_association.rb @@ -20,7 +20,6 @@ def initialize(name, options) extract_options! options end - # rubocop: disable Metrics/AbcSize def match(expected, _actual) @actual = plan.declarations .find { |key, decl| key == :association && decl.name == expected } diff --git a/spec/clowne/adapters/base/association_spec.rb b/spec/clowne/adapters/base/association_spec.rb index 5935951..9d7d0ae 100644 --- a/spec/clowne/adapters/base/association_spec.rb +++ b/spec/clowne/adapters/base/association_spec.rb @@ -71,7 +71,7 @@ context "with record" do let(:custom_declaration_params) do { - params: ->(params, parent) { params.merge(some_stuff: "ಠᴗಠ", parent: parent) }, + params: ->(params, parent) { params.merge(some_stuff: "ಠᴗಠ", parent: parent) } } end diff --git a/spec/clowne/cloner_spec.rb b/spec/clowne/cloner_spec.rb index dc54ce6..c3b2e4e 100644 --- a/spec/clowne/cloner_spec.rb +++ b/spec/clowne/cloner_spec.rb @@ -33,21 +33,21 @@ let(:expected_plan) do [ [:association, Clowne::Declarations::IncludeAssociation, { - name: :comments, scope: nil, options: {}, - },], + name: :comments, scope: nil, options: {} + }], [:association, Clowne::Declarations::IncludeAssociation, { name: :posts, scope: :some_scope, - options: {clone_with: "AnotherClonerClass"}, - },], + options: {clone_with: "AnotherClonerClass"} + }], [:association, Clowne::Declarations::IncludeAssociation, { name: :tags, scope: nil, - options: {clone_with: "AnotherCloner2Class"}, - },], + options: {clone_with: "AnotherCloner2Class"} + }], [:nullify, Clowne::Declarations::Nullify, {attributes: %i[title description]}], [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 1 }}], - [:after_persist, Clowne::Declarations::AfterPersist, {block: proc { 2 + 2 }}], + [:after_persist, Clowne::Declarations::AfterPersist, {block: proc { 2 + 2 }}] ] end @@ -67,19 +67,19 @@ [:association, Clowne::Declarations::IncludeAssociation, { name: :posts, scope: :some_scope, - options: {clone_with: "AnotherClonerClass"}, - },], + options: {clone_with: "AnotherClonerClass"} + }], [:association, Clowne::Declarations::IncludeAssociation, { name: :tags, scope: nil, - options: {clone_with: "AnotherCloner2Class"}, - },], + options: {clone_with: "AnotherCloner2Class"} + }], [:association, Clowne::Declarations::IncludeAssociation, { - name: :brands, scope: nil, options: {}, - },], + name: :brands, scope: nil, options: {} + }], [:nullify, Clowne::Declarations::Nullify, {attributes: %i[title description]}], [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 1 }}], - [:after_persist, Clowne::Declarations::AfterPersist, {block: proc { 2 + 2 }}], + [:after_persist, Clowne::Declarations::AfterPersist, {block: proc { 2 + 2 }}] ] end diff --git a/spec/clowne/integrations/adapter_lifecycle_spec.rb b/spec/clowne/integrations/adapter_lifecycle_spec.rb index 3c6ff45..6fa3743 100644 --- a/spec/clowne/integrations/adapter_lifecycle_spec.rb +++ b/spec/clowne/integrations/adapter_lifecycle_spec.rb @@ -26,7 +26,6 @@ class PostCloner < Clowne::Cloner; end end shared_examples "pass adapter" do - # rubocop:disable Layout/MultilineMethodCallIndentation it "clones topic" do expect do operation.persist diff --git a/spec/clowne/integrations/after_persist_spec.rb b/spec/clowne/integrations/after_persist_spec.rb index fa9f915..96efb13 100644 --- a/spec/clowne/integrations/after_persist_spec.rb +++ b/spec/clowne/integrations/after_persist_spec.rb @@ -50,7 +50,6 @@ class ImgCloner < Clowne::Cloner and we need to update the cloned topic with the cloned image' do subject(:operation) { AR::TopicCloner.call(topic) } - # rubocop:disable Layout/MultilineMethodCallIndentation it "clone and use cloned image" do expect do operation.persist diff --git a/spec/clowne/planner_spec.rb b/spec/clowne/planner_spec.rb index ca65683..4437906 100644 --- a/spec/clowne/planner_spec.rb +++ b/spec/clowne/planner_spec.rb @@ -32,7 +32,7 @@ is_expected.to match_declarations( [ [:nullify, Clowne::Declarations::Nullify, {attributes: %i[foo bar]}], - [:nullify, Clowne::Declarations::Nullify, {attributes: %i[baz]}], + [:nullify, Clowne::Declarations::Nullify, {attributes: %i[baz]}] ] ) end @@ -54,7 +54,7 @@ is_expected.to match_declarations( [ [:nullify, Clowne::Declarations::Nullify, {attributes: %i[foo]}], - [:nullify, Clowne::Declarations::Nullify, {attributes: %i[bar]}], + [:nullify, Clowne::Declarations::Nullify, {attributes: %i[bar]}] ] ) end @@ -73,7 +73,7 @@ is_expected.to match_declarations( [ [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 1 }}], - [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 2 }}], + [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 2 }}] ] ) end @@ -105,7 +105,7 @@ [ [:association, Clowne::Declarations::IncludeAssociation, {name: :users}], [:association, Clowne::Declarations::IncludeAssociation, {name: :posts}], - [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 1 }}], + [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 1 }}] ] ) end @@ -120,7 +120,7 @@ [:association, Clowne::Declarations::IncludeAssociation, {name: :users}], [:association, Clowne::Declarations::IncludeAssociation, {name: :brands}], [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 1 }}], - [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 2 }}], + [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 2 }}] ] ) end @@ -136,7 +136,7 @@ [:association, Clowne::Declarations::IncludeAssociation, {name: :brands}], [:nullify, Clowne::Declarations::Nullify, {attributes: %i[extra data meta]}], [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 1 }}], - [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 2 }}], + [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 2 }}] ] ) end @@ -166,7 +166,7 @@ [:nullify, Clowne::Declarations::Nullify, {attributes: %i[extra data meta]}], [:nullify, Clowne::Declarations::Nullify, {attributes: %i[files_cache]}], [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 1 }}], - [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 2 }}], + [:finalize, Clowne::Declarations::Finalize, {block: proc { 1 + 2 }}] ] ) end diff --git a/spec/clowne/utils/params_spec.rb b/spec/clowne/utils/params_spec.rb index cf382df..06c7406 100644 --- a/spec/clowne/utils/params_spec.rb +++ b/spec/clowne/utils/params_spec.rb @@ -3,7 +3,7 @@ let(:params) do { profile: {data: {name: "Robin"}}, - rating: 10, + rating: 10 } end let(:permitted_params) { subject.permit(params: params) } diff --git a/spec/clowne/utils/plan_spec.rb b/spec/clowne/utils/plan_spec.rb index 3b14da7..8cad872 100644 --- a/spec/clowne/utils/plan_spec.rb +++ b/spec/clowne/utils/plan_spec.rb @@ -23,7 +23,7 @@ [:a, "value_2"], [:b, "item_1"], [:b, "item_2"], - [:c, "scalar_1"], + [:c, "scalar_1"] ] ) @@ -37,7 +37,7 @@ [:a, "value_2"], [:b, "item_1"], [:b, "item_2"], - [:c, "scalar_1"], + [:c, "scalar_1"] ] ) @@ -45,7 +45,7 @@ [ [:a, "value_2"], [:b, "item_1"], - [:b, "item_2"], + [:b, "item_2"] ] ) @@ -55,7 +55,7 @@ [ [:a, "value_2"], [:b, "item_1"], - [:b, "item_2"], + [:b, "item_2"] ] ) end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 6c33102..e9d6ac2 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -12,14 +12,14 @@ begin require "pry-byebug" -rescue LoadError # rubocop:disable Lint/HandleExceptions +rescue LoadError end %w[active_record sequel].each do |orm| require_relative "./support/#{orm}/initializer.rb" end -Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } +Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].sort.each { |f| require f } Clowne.default_adapter = :base diff --git a/spec/support/active_record/initializer.rb b/spec/support/active_record/initializer.rb index c5744ff..0eb2360 100644 --- a/spec/support/active_record/initializer.rb +++ b/spec/support/active_record/initializer.rb @@ -3,5 +3,5 @@ ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") -require_relative "./schema.rb" -require_relative "./models.rb" +require_relative "./schema" +require_relative "./models" diff --git a/spec/support/sequel/initializer.rb b/spec/support/sequel/initializer.rb index 3c99e99..7a91d20 100644 --- a/spec/support/sequel/initializer.rb +++ b/spec/support/sequel/initializer.rb @@ -8,5 +8,5 @@ SEQUEL_DB = Sequel.connect(db) -require_relative "./schema.rb" -require_relative "./models.rb" +require_relative "./schema" +require_relative "./models" From b88757e2d6cebbe9b85fee8510d5d1b15b2e74b5 Mon Sep 17 00:00:00 2001 From: Nikolay Sverchkov Date: Sun, 31 Oct 2021 13:05:13 +0300 Subject: [PATCH 3/3] Drop Ruby 2.4 support --- .github/workflows/rspec.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/rspec.yml b/.github/workflows/rspec.yml index 39ac37a..891cbcd 100644 --- a/.github/workflows/rspec.yml +++ b/.github/workflows/rspec.yml @@ -27,8 +27,6 @@ jobs: - ruby: 2.6.5 gemfile: "Gemfile" - ruby: 2.5.7 - gemfile: "Gemfile" - - ruby: 2.4.9 gemfile: "gemfiles/activerecord42.gemfile" steps: - uses: actions/checkout@v2