diff --git a/.github/workflows/rspec.yml b/.github/workflows/rspec.yml index 39ac37a8..891cbcd9 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 diff --git a/.rubocop.yml b/.rubocop.yml index bc8cc306..0301eb8c 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/clowne.gemspec b/clowne.gemspec index 558cbcb3..8e7df009 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 diff --git a/docs/.rubocop.yml b/docs/.rubocop.yml index c04c5300..81ce83fb 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 7eddf19f..b61b73d6 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 48cf4504..85ea46a4 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 8c2016bd..db851df6 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 c9aabb2f..735a84ec 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 4741ab30..ff4abf89 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 1a9f6aef..467db9fb 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 122f16d2..17f7b083 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 ef79771e..1310bd03 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 bff1148e..08ab947e 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 ccfa9eae..029aeff1 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 f7c07c3d..04c07b4c 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 9b855aa8..57c40aa6 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 eb21999c..4938823f 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 e946b2da..32c46eba 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 5935951d..9d7d0ae3 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 dc54ce68..c3b2e4e8 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 3c6ff45e..6fa3743a 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 fa9f9153..96efb139 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 ca65683b..44379062 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 cf382df7..06c74064 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 3b14da77..8cad872a 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 6c331025..e9d6ac21 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 c5744ff6..0eb23604 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 3c99e997..7a91d208 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"