class RuboCop::Cop::Bundler::OrderedGems

Gems should be alphabetically sorted within groups.

@example

# bad
gem 'rubocop'
gem 'rspec'

# good
gem 'rspec'
gem 'rubocop'

# good
gem 'rubocop'

gem 'rspec'

# good only if TreatCommentsAsGroupSeparators is true
# For code quality
gem 'rubocop'
# For tests
gem 'rspec'

Constants

MSG

Public Instance Methods

investigate(processed_source) click to toggle source
# File lib/rubocop/cop/bundler/ordered_gems.rb, line 34
def investigate(processed_source)
  return if processed_source.ast.nil?
  gem_declarations(processed_source.ast)
    .each_cons(2) do |previous, current|
    next unless consecutive_lines(previous, current)
    next unless case_insensitive_out_of_order?(
      gem_name(current),
      gem_name(previous)
    )
    register_offense(previous, current)
  end
end

Private Instance Methods

previous_declaration(node) click to toggle source
# File lib/rubocop/cop/bundler/ordered_gems.rb, line 49
def previous_declaration(node)
  declarations = gem_declarations(processed_source.ast)
  node_index = declarations.find_index(node)
  declarations.to_a[node_index - 1]
end