diff --git a/app/models/concerns/atomic_internal_id.rb b/app/models/concerns/atomic_internal_id.rb index 4e15b60ccd14dc7fe60dc5e5987fbe91c9b512ad..7f6d48d972c975380ffd1ce9c6f442e026acce37 100644 --- a/app/models/concerns/atomic_internal_id.rb +++ b/app/models/concerns/atomic_internal_id.rb @@ -26,7 +26,7 @@ module AtomicInternalId extend ActiveSupport::Concern - class_methods do + module ClassMethods def has_internal_id(column, scope:, init:, presence: true) # rubocop:disable Naming/PredicateName # We require init here to retain the ability to recalculate in the absence of a # InternaLId record (we may delete records in `internal_ids` for example). diff --git a/app/models/concerns/awardable.rb b/app/models/concerns/awardable.rb index 6f29c92d176219320cc0f5ec54c2a1f1beb4cade..4200253053ad13e21860a1f1538d878db6183ed6 100644 --- a/app/models/concerns/awardable.rb +++ b/app/models/concerns/awardable.rb @@ -12,7 +12,7 @@ module Awardable end end - class_methods do + module ClassMethods def awarded(user, name) sql = <<~EOL EXISTS ( diff --git a/app/models/concerns/case_sensitivity.rb b/app/models/concerns/case_sensitivity.rb index 6e80365ee5b80894443b84e9e2b627d327cce290..0ba542b75ab4407108f00d63d310a3974c3f3d50 100644 --- a/app/models/concerns/case_sensitivity.rb +++ b/app/models/concerns/case_sensitivity.rb @@ -4,7 +4,7 @@ module CaseSensitivity extend ActiveSupport::Concern - class_methods do + module ClassMethods # Queries the given columns regardless of the casing used. # # Unlike other ActiveRecord methods this method only operates on a Hash. diff --git a/app/models/concerns/each_batch.rb b/app/models/concerns/each_batch.rb index 8cf0b8b154dfaca79f3f625b89af196840ed01d7..a9e14cb55ebad29fd504d0aa87b29a22bd2e3736 100644 --- a/app/models/concerns/each_batch.rb +++ b/app/models/concerns/each_batch.rb @@ -3,7 +3,7 @@ module EachBatch extend ActiveSupport::Concern - class_methods do + module ClassMethods # Iterates over the rows in a relation in batches, similar to Rails' # `in_batches` but in a more efficient way. # diff --git a/app/models/concerns/ignorable_column.rb b/app/models/concerns/ignorable_column.rb index 5c1f7dfcd2ad6bc96f1399405023c9622a1df6a9..2b074c1921c25ac19c9997c0a8baf3b9469a4f44 100644 --- a/app/models/concerns/ignorable_column.rb +++ b/app/models/concerns/ignorable_column.rb @@ -14,7 +14,7 @@ module IgnorableColumn extend ActiveSupport::Concern - class_methods do + module ClassMethods def columns super.reject { |column| ignored_columns.include?(column.name) } end diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 5c07fe82ead8ffbb530711a69cd0b50fdc580b56..7401cee812591f6b858ff2960e56fe3990e189b6 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -117,7 +117,7 @@ def etag_caching_enabled? end end - class_methods do + module ClassMethods # Searches for records with a matching title. # # This method uses ILIKE on PostgreSQL and LIKE on MySQL. diff --git a/app/models/concerns/loaded_in_group_list.rb b/app/models/concerns/loaded_in_group_list.rb index fc15c6d55ed65b561fb80c0fe5a31b0e727c38b5..a2233eb29978a5d534d1c3e990912639aab8f37f 100644 --- a/app/models/concerns/loaded_in_group_list.rb +++ b/app/models/concerns/loaded_in_group_list.rb @@ -3,7 +3,7 @@ module LoadedInGroupList extend ActiveSupport::Concern - class_methods do + module ClassMethods def with_counts(archived:) selects_including_counts = [ 'namespaces.*', diff --git a/app/models/concerns/manual_inverse_association.rb b/app/models/concerns/manual_inverse_association.rb index e18edd33ba7882292301957280cec8ca17422741..d0d781dc15f84a312bf3e5c4e96dd2e9aa9baa1f 100644 --- a/app/models/concerns/manual_inverse_association.rb +++ b/app/models/concerns/manual_inverse_association.rb @@ -3,7 +3,7 @@ module ManualInverseAssociation extend ActiveSupport::Concern - class_methods do + module ClassMethods def manual_inverse_association(association, inverse) define_method(association) do |*args| super(*args).tap do |value| diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb index 915f5c66845d1daf031ee33ea57eeafe4e9bd71c..d1f20c4f85e0e2106ef0f23d7016757e1d6ba9b1 100644 --- a/app/models/concerns/mentionable.rb +++ b/app/models/concerns/mentionable.rb @@ -10,7 +10,7 @@ module Mentionable extend ActiveSupport::Concern - class_methods do + module ClassMethods # Indicate which attributes of the Mentionable to search for GFM references. def attr_mentionable(attr, options = {}) attr = attr.to_s diff --git a/app/models/concerns/participable.rb b/app/models/concerns/participable.rb index d8a332fb95c1ae0c46c25284a79d8217b3f91028..32c0c58f0b312273835fbe550731f3136d26de18 100644 --- a/app/models/concerns/participable.rb +++ b/app/models/concerns/participable.rb @@ -27,7 +27,7 @@ module Participable extend ActiveSupport::Concern prepend EE::Participable - class_methods do + module ClassMethods # Adds a list of participant attributes. Attributes can either be symbols or # Procs. # diff --git a/app/models/concerns/referable.rb b/app/models/concerns/referable.rb index 58143a32fdce5c3c2fc05de9724988ab4cf7b762..468eaf688836cc8e5549498e2ee2aafd84011e60 100644 --- a/app/models/concerns/referable.rb +++ b/app/models/concerns/referable.rb @@ -40,7 +40,7 @@ def referable_inspect end end - class_methods do + module ClassMethods # The character that prefixes the actual reference identifier # # This should be overridden by the including class. diff --git a/app/models/concerns/resolvable_note.rb b/app/models/concerns/resolvable_note.rb index 16ea330701dcdb43142b02c1bc96bd2c2442bf2e..f47e20229f1d2ad6b5069ba856f86ff178770ab6 100644 --- a/app/models/concerns/resolvable_note.rb +++ b/app/models/concerns/resolvable_note.rb @@ -20,7 +20,7 @@ module ResolvableNote scope :unresolved, -> { resolvable.where(resolved_at: nil) } end - class_methods do + module ClassMethods # This method must be kept in sync with `#resolve!` def resolve!(current_user) unresolved.update_all(resolved_at: Time.now, resolved_by_id: current_user.id) diff --git a/app/models/concerns/select_for_project_authorization.rb b/app/models/concerns/select_for_project_authorization.rb index 333c9118aa5c56af26caa41cf775c1cf3fc6fb0b..39306179eb805f8ff6247de2702769d39ab4cab0 100644 --- a/app/models/concerns/select_for_project_authorization.rb +++ b/app/models/concerns/select_for_project_authorization.rb @@ -3,7 +3,7 @@ module SelectForProjectAuthorization extend ActiveSupport::Concern - class_methods do + module ClassMethods def select_for_project_authorization select("projects.id AS project_id, members.access_level") end diff --git a/app/models/concerns/sha_attribute.rb b/app/models/concerns/sha_attribute.rb index 118348ae029ea4cab687946f524ab42eaf2d948c..40d873a19119577476e9821a1d86563406eecaf8 100644 --- a/app/models/concerns/sha_attribute.rb +++ b/app/models/concerns/sha_attribute.rb @@ -3,7 +3,7 @@ module ShaAttribute extend ActiveSupport::Concern - class_methods do + module ClassMethods def sha_attribute(name) return if ENV['STATIC_VERIFICATION'] diff --git a/app/models/concerns/sortable.rb b/app/models/concerns/sortable.rb index 29e48f0c5f71b5a702cc0dc659464a5c87a7fc12..501bd1bb83c9fbf42add1588df5482ac3cc63a52 100644 --- a/app/models/concerns/sortable.rb +++ b/app/models/concerns/sortable.rb @@ -19,7 +19,7 @@ module Sortable scope :order_name_desc, -> { reorder(Arel::Nodes::Descending.new(arel_table[:name].lower)) } end - class_methods do + module ClassMethods def order_by(method) case method.to_s when 'created_asc' then order_created_asc diff --git a/app/models/concerns/spammable.rb b/app/models/concerns/spammable.rb index 3ff4b4046d3ee3e11410f02f9d0f28f9258df3d3..c6e3dc385fea5a170958c9e1267b052b4e927e0e 100644 --- a/app/models/concerns/spammable.rb +++ b/app/models/concerns/spammable.rb @@ -3,7 +3,7 @@ module Spammable extend ActiveSupport::Concern - class_methods do + module ClassMethods def attr_spammable(attr, options = {}) spammable_attrs << [attr.to_s, options] end diff --git a/app/models/concerns/strip_attribute.rb b/app/models/concerns/strip_attribute.rb index c9f5ba7793d838285028374804f7e56a087353cd..344f677a3f3d4e39cd5daabd402db38cdb749d49 100644 --- a/app/models/concerns/strip_attribute.rb +++ b/app/models/concerns/strip_attribute.rb @@ -14,7 +14,7 @@ module StripAttribute extend ActiveSupport::Concern - class_methods do + module ClassMethods def strip_attributes(*attrs) strip_attrs.concat(attrs) end diff --git a/app/workers/concerns/application_worker.rb b/app/workers/concerns/application_worker.rb index d64c2f82a09400ec80aa45cff5853d39e3c1c610..bb06e31641d635d0933cf5b281c96cde00d3c863 100644 --- a/app/workers/concerns/application_worker.rb +++ b/app/workers/concerns/application_worker.rb @@ -11,7 +11,7 @@ module ApplicationWorker set_queue end - class_methods do + module ClassMethods def inherited(subclass) subclass.set_queue end diff --git a/app/workers/concerns/waitable_worker.rb b/app/workers/concerns/waitable_worker.rb index 27b94a82444152331461ba88e749b51c74a0e5d4..d85bc7d16600902c48570d3d88225506ea6b121b 100644 --- a/app/workers/concerns/waitable_worker.rb +++ b/app/workers/concerns/waitable_worker.rb @@ -3,7 +3,7 @@ module WaitableWorker extend ActiveSupport::Concern - class_methods do + module ClassMethods # Schedules multiple jobs and waits for them to be completed. def bulk_perform_and_wait(args_list, timeout: 10) # Short-circuit: it's more efficient to do small numbers of jobs inline diff --git a/ee/app/finders/ee/issues_finder.rb b/ee/app/finders/ee/issues_finder.rb index d1ba1c3d96b24bbafd4afc3ca4fcd4b0b6c773a2..0e54bea25a74aff26d181c840a74e271342cda78 100644 --- a/ee/app/finders/ee/issues_finder.rb +++ b/ee/app/finders/ee/issues_finder.rb @@ -4,7 +4,7 @@ module IssuesFinder extend ::Gitlab::Utils::Override include ::Gitlab::Utils::StrongMemoize - class_methods do + module ClassMethods extend ::Gitlab::Utils::Override override :scalar_params diff --git a/ee/app/models/concerns/custom_model_naming.rb b/ee/app/models/concerns/custom_model_naming.rb index 43ac040fc90f30b592a55f80dde6a5183b738eec..5fee05b35446a3f353c3cdaff35ba08b78ae32fe 100644 --- a/ee/app/models/concerns/custom_model_naming.rb +++ b/ee/app/models/concerns/custom_model_naming.rb @@ -7,7 +7,7 @@ module CustomModelNaming self.class_attribute :singular_route_key, :route_key, :param_key end - class_methods do + module ClassMethods def model_name @_model_name ||= begin namespace = self.parents.detect do |n| diff --git a/ee/app/models/concerns/elastic/application_search.rb b/ee/app/models/concerns/elastic/application_search.rb index a2e79d6d5a4cf022b7840adacc4586ef4dd41ea6..6ff90c49fdb532b32c73686dc6cf36c62736daad 100644 --- a/ee/app/models/concerns/elastic/application_search.rb +++ b/ee/app/models/concerns/elastic/application_search.rb @@ -85,7 +85,7 @@ def safely_read_attribute_for_elasticsearch(attr_name) end end - class_methods do + module ClassMethods # Should be overridden for all nested models def nested? false diff --git a/ee/app/models/ee/application_setting.rb b/ee/app/models/ee/application_setting.rb index 96dc506bc455ff2249febcff2a3c1e9de134d903..f6773e7d43f3071cd63563c5c470765a5e32146f 100644 --- a/ee/app/models/ee/application_setting.rb +++ b/ee/app/models/ee/application_setting.rb @@ -87,7 +87,7 @@ module ApplicationSetting encode: true end - class_methods do + module ClassMethods extend ::Gitlab::Utils::Override override :defaults diff --git a/ee/app/models/ee/broadcast_message.rb b/ee/app/models/ee/broadcast_message.rb index 5865a7ac763126e2e8fd17700aad879598d4114e..b0040d51167676ad37c231c0eda78b1c3320ffe7 100644 --- a/ee/app/models/ee/broadcast_message.rb +++ b/ee/app/models/ee/broadcast_message.rb @@ -6,7 +6,7 @@ module EE module BroadcastMessage extend ActiveSupport::Concern - class_methods do + module ClassMethods extend ::Gitlab::Utils::Override override :cache_expires_in diff --git a/ee/app/models/ee/epic.rb b/ee/app/models/ee/epic.rb index 112723f5551b197717b424fe247f72af8d244872..65a63316c6e57f2f2dc658d2b248149ff0d3a9d0 100644 --- a/ee/app/models/ee/epic.rb +++ b/ee/app/models/ee/epic.rb @@ -31,7 +31,7 @@ module Epic end end - class_methods do + module ClassMethods # We support internal references (&epic_id) and cross-references (group.full_path&epic_id) # # Escaped versions with `&` will be extracted too diff --git a/ee/app/models/ee/identity.rb b/ee/app/models/ee/identity.rb index 69492de9325312c89e3ef7fb7e1ca7c42633a613..594edaa7a489b92a951729948562f68f6829f4ba 100644 --- a/ee/app/models/ee/identity.rb +++ b/ee/app/models/ee/identity.rb @@ -12,7 +12,7 @@ module Identity end end - class_methods do + module ClassMethods def uniqueness_scope [*super, :saml_provider_id] end diff --git a/ee/app/models/ee/issue.rb b/ee/app/models/ee/issue.rb index 9b3c7c3fd143eaa282d7a78725b12a9f513d68a1..b98856037367b6d22ce64fb25f0826b25a2a8316 100644 --- a/ee/app/models/ee/issue.rb +++ b/ee/app/models/ee/issue.rb @@ -70,7 +70,7 @@ def supports_weight? project&.feature_available?(:issue_weights) end - class_methods do + module ClassMethods # override def sort_by_attribute(method, excluded_labels: []) case method.to_s diff --git a/ee/app/models/ee/namespace.rb b/ee/app/models/ee/namespace.rb index 9fdcba68e1c07780b3be587e9b10d34f4de9abf4..b95db4325b158c9f977c991d661f3114a84083b2 100644 --- a/ee/app/models/ee/namespace.rb +++ b/ee/app/models/ee/namespace.rb @@ -41,7 +41,7 @@ module Namespace before_create :sync_membership_lock_with_parent end - class_methods do + module ClassMethods def plans_with_feature(feature) LICENSE_PLANS_TO_NAMESPACE_PLANS.values_at(*License.plans_with_feature(feature)) end diff --git a/ee/app/models/ee/project.rb b/ee/app/models/ee/project.rb index 6b0ba877119c174cf6ec3c10016676c2969ac4ec..c4bd7d69b1fbf1c7a14d770b56fbb4d3a841b7b7 100644 --- a/ee/app/models/ee/project.rb +++ b/ee/app/models/ee/project.rb @@ -86,7 +86,7 @@ module Project default_value_for :packages_enabled, true end - class_methods do + module ClassMethods def search_by_visibility(level) where(visibility_level: ::Gitlab::VisibilityLevel.string_options[level]) end diff --git a/ee/app/models/ee/project_authorization.rb b/ee/app/models/ee/project_authorization.rb index 96f4561c08adbc787505efb188654aa3d77cb82c..e313727087ce148d5e5827ea3313ff765a5f58a5 100644 --- a/ee/app/models/ee/project_authorization.rb +++ b/ee/app/models/ee/project_authorization.rb @@ -2,7 +2,7 @@ module EE module ProjectAuthorization extend ActiveSupport::Concern - class_methods do + module ClassMethods # Get amout of users with highest role they have. # If John is developer in one project but maintainer in another he will be # counted once as maintainer. This is needed to count users who don't use diff --git a/ee/app/models/ee/service.rb b/ee/app/models/ee/service.rb index d4f32d40179bda8c554a5cbef7493f40107f73f0..236beaf7871a23c6de86495b3e5f821962ccfbfb 100644 --- a/ee/app/models/ee/service.rb +++ b/ee/app/models/ee/service.rb @@ -2,7 +2,7 @@ module EE module Service extend ActiveSupport::Concern - class_methods do + module ClassMethods extend ::Gitlab::Utils::Override override :available_services_names diff --git a/ee/app/models/ee/user.rb b/ee/app/models/ee/user.rb index 63e0a8ce1a88d62d5c52799456dd003b5b1b51d7..419a661ab95ed50b80a8985d1cf1b005e42007ce 100644 --- a/ee/app/models/ee/user.rb +++ b/ee/app/models/ee/user.rb @@ -45,7 +45,7 @@ module User enum roadmap_layout: { weeks: 1, months: 4, quarters: 12 } end - class_methods do + module ClassMethods def support_bot email_pattern = "support%s@#{Settings.gitlab.host}" diff --git a/ee/changelogs/unreleased/ce-port-50414-rubocop-rule-to-enforce-class-methods-over-module.yml b/ee/changelogs/unreleased/ce-port-50414-rubocop-rule-to-enforce-class-methods-over-module.yml deleted file mode 100644 index 849b191b6f1facda259da5ff7a746b1d3c784e8b..0000000000000000000000000000000000000000 --- a/ee/changelogs/unreleased/ce-port-50414-rubocop-rule-to-enforce-class-methods-over-module.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Adds Rubocop rule to enforce class_methods over module ClassMethods -merge_request: 7044 -author: Jacopo Beschi @jacopo-beschi -type: added diff --git a/ee/lib/ee/banzai/filter/epic_reference_filter.rb b/ee/lib/ee/banzai/filter/epic_reference_filter.rb index 0ebd17e89cea600b97c106c14ec3232cea4eea75..50de5984b2eba26c085a7f5a45eba533de8adbb3 100644 --- a/ee/lib/ee/banzai/filter/epic_reference_filter.rb +++ b/ee/lib/ee/banzai/filter/epic_reference_filter.rb @@ -8,7 +8,7 @@ module Filter module EpicReferenceFilter extend ActiveSupport::Concern - class_methods do + module ClassMethods def references_in(text, pattern = object_class.reference_pattern) text.gsub(pattern) do |match| symbol = $~[object_sym] diff --git a/ee/lib/elasticsearch/git/repository.rb b/ee/lib/elasticsearch/git/repository.rb index baad8f349368a1056a8407624cac608d386ecb4b..f547f34c2019a58e0d79e2324e582a4751b7e13f 100644 --- a/ee/lib/elasticsearch/git/repository.rb +++ b/ee/lib/elasticsearch/git/repository.rb @@ -400,7 +400,7 @@ def allow_disk_access end end - class_methods do + module ClassMethods def search(query, type: :all, page: 1, per: 20, options: {}) results = { blobs: [], commits: [] } diff --git a/lib/api/api_guard.rb b/lib/api/api_guard.rb index 2bba1467f2bcd678f807b6f7a96fe60c645626eb..4ebf2040084009be28a4bd0b1c77c337d33246d5 100644 --- a/lib/api/api_guard.rb +++ b/lib/api/api_guard.rb @@ -85,7 +85,7 @@ def api_access_denied_message(user) end end - class_methods do + module ClassMethods private def install_error_responders(base) diff --git a/lib/api/projects_relation_builder.rb b/lib/api/projects_relation_builder.rb index 9fd79c491c2ba2d4e9335d0a454eb916e3ae5311..6482fd94ab82ca91b52e235a1e09e20ee1f7831d 100644 --- a/lib/api/projects_relation_builder.rb +++ b/lib/api/projects_relation_builder.rb @@ -2,7 +2,7 @@ module API module ProjectsRelationBuilder extend ActiveSupport::Concern - class_methods do + module ClassMethods def prepare_relation(projects_relation, options = {}) projects_relation = preload_relation(projects_relation, options) execute_batch_counting(projects_relation) diff --git a/lib/gitlab/github_import/representation/expose_attribute.rb b/lib/gitlab/github_import/representation/expose_attribute.rb index d2438ee8094fc36d301d7df83cbf69d9eea41855..c340575963167cce0452d66f44babcd11f950a84 100644 --- a/lib/gitlab/github_import/representation/expose_attribute.rb +++ b/lib/gitlab/github_import/representation/expose_attribute.rb @@ -6,7 +6,7 @@ module Representation module ExposeAttribute extend ActiveSupport::Concern - class_methods do + module ClassMethods # Defines getter methods for the given attribute names. # # Example: diff --git a/lib/gitlab/graphql/mount_mutation.rb b/lib/gitlab/graphql/mount_mutation.rb index 9048967d4e126d27604034b4ebe66d2181eb5243..8cab84d7a5fee17fff366716252127305d52a6c8 100644 --- a/lib/gitlab/graphql/mount_mutation.rb +++ b/lib/gitlab/graphql/mount_mutation.rb @@ -5,7 +5,7 @@ module Graphql module MountMutation extend ActiveSupport::Concern - class_methods do + module ClassMethods def mount_mutation(mutation_class) # Using an underscored field name symbol will make `graphql-ruby` # standardize the field name diff --git a/lib/static_model.rb b/lib/static_model.rb index 44673c2b5f62a55a49083ed03a43d1162ac54ecb..60e2dd82e4ea6b225fc866204d1fa4ab985b5afd 100644 --- a/lib/static_model.rb +++ b/lib/static_model.rb @@ -2,7 +2,7 @@ module StaticModel extend ActiveSupport::Concern - class_methods do + module ClassMethods # Used by ActiveRecord's polymorphic association to set object_id def primary_key 'id' diff --git a/rubocop/cop/prefer_class_methods_over_module.rb b/rubocop/cop/prefer_class_methods_over_module.rb deleted file mode 100644 index 0dfa80ccfab5f28f28f7aa4ec39fbfe238a811f5..0000000000000000000000000000000000000000 --- a/rubocop/cop/prefer_class_methods_over_module.rb +++ /dev/null @@ -1,73 +0,0 @@ -# frozen_string_literal: true - -module RuboCop - module Cop - # Enforces the use of 'class_methods' instead of 'module ClassMethods' for activesupport concerns. - # For more information see: https://gitlab.com/gitlab-org/gitlab-ce/issues/50414 - # - # @example - # # bad - # module Foo - # extend ActiveSupport::Concern - # - # module ClassMethods - # def a_class_method - # end - # end - # end - # - # # good - # module Foo - # extend ActiveSupport::Concern - # - # class_methods do - # def a_class_method - # end - # end - # end - # - class PreferClassMethodsOverModule < RuboCop::Cop::Cop - include RangeHelp - - MSG = 'Do not use module ClassMethods, use class_methods block instead.' - - def_node_matcher :extend_activesupport_concern?, <<~PATTERN - (:send nil? :extend (:const (:const nil? :ActiveSupport) :Concern)) - PATTERN - - def on_module(node) - add_offense(node) if node.defined_module_name == 'ClassMethods' && module_extends_activesupport_concern?(node) - end - - def autocorrect(node) - lambda do |corrector| - corrector.replace(module_range(node), 'class_methods do') - end - end - - private - - def module_extends_activesupport_concern?(node) - container_module = container_module_of(node) - return false unless container_module - - container_module.descendants.any? do |descendant| - extend_activesupport_concern?(descendant) - end - end - - def container_module_of(node) - while node = node.parent - break if node.type == :module - end - - node - end - - def module_range(node) - module_node, _ = *node - range_between(node.loc.keyword.begin_pos, module_node.source_range.end_pos) - end - end - end -end diff --git a/rubocop/rubocop.rb b/rubocop/rubocop.rb index d823fa4edb1f5c3f8064e02205f5537ab92e0035..eaf421a7235b9fbd0b58cf27bf30db4fff3610e8 100644 --- a/rubocop/rubocop.rb +++ b/rubocop/rubocop.rb @@ -7,7 +7,6 @@ require_relative 'cop/avoid_return_from_blocks' require_relative 'cop/avoid_break_from_strong_memoize' require_relative 'cop/line_break_around_conditional_block' -require_relative 'cop/prefer_class_methods_over_module' require_relative 'cop/migration/add_column' require_relative 'cop/migration/add_concurrent_foreign_key' require_relative 'cop/migration/add_concurrent_index' diff --git a/spec/rubocop/cop/prefer_class_methods_over_module_spec.rb b/spec/rubocop/cop/prefer_class_methods_over_module_spec.rb deleted file mode 100644 index 4739f0e6c47ad5d899079aa021750c3c50635782..0000000000000000000000000000000000000000 --- a/spec/rubocop/cop/prefer_class_methods_over_module_spec.rb +++ /dev/null @@ -1,98 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' -require 'rubocop' -require 'rubocop/rspec/support' -require_relative '../../../rubocop/cop/prefer_class_methods_over_module' - -describe RuboCop::Cop::PreferClassMethodsOverModule do - include CopHelper - - subject(:cop) { described_class.new } - - it 'flags violation when using module ClassMethods' do - expect_offense(<<~RUBY) - module Foo - extend ActiveSupport::Concern - - module ClassMethods - ^^^^^^^^^^^^^^^^^^^ Do not use module ClassMethods, use class_methods block instead. - def a_class_method - end - end - end - RUBY - end - - it "doesn't flag violation when using class_methods" do - expect_no_offenses(<<~RUBY) - module Foo - extend ActiveSupport::Concern - - class_methods do - def a_class_method - end - end - end - RUBY - end - - it "doesn't flag violation when module is not extending ActiveSupport::Concern" do - expect_no_offenses(<<~RUBY) - module Foo - module ClassMethods - def a_class_method - end - end - end - RUBY - end - - it "doesn't flag violation when ClassMethods is used inside a class" do - expect_no_offenses(<<~RUBY) - class Foo - module ClassMethods - def a_class_method - end - end - end - RUBY - end - - it "doesn't flag violation when not using either class_methods or ClassMethods" do - expect_no_offenses(<<~RUBY) - module Foo - extend ActiveSupport::Concern - - def a_method - end - end - RUBY - end - - it 'autocorrects ClassMethods into class_methods' do - source = <<~RUBY - module Foo - extend ActiveSupport::Concern - - module ClassMethods - def a_class_method - end - end - end - RUBY - autocorrected = autocorrect_source(source) - - expected_source = <<~RUBY - module Foo - extend ActiveSupport::Concern - - class_methods do - def a_class_method - end - end - end - RUBY - expect(autocorrected).to eq(expected_source) - end -end