class Supercop::Actions::Loaders::Dependency

Constants

BUNDLE_REQUIRED
END_COMMENT
START_COMMENT

Attributes

file_injector[R]
gem_list[R]
loader[R]

Public Class Methods

new(loader = nil) click to toggle source
# File lib/supercop/actions/loaders/dependency.rb, line 11
def initialize(loader = nil)
  @gem_list = Supercop.configuration.cops_settings.keys
  @loader = loader || Base
  @file_injector = Supercop::Actions::FileInjector
end

Public Instance Methods

call() click to toggle source
# File lib/supercop/actions/loaders/dependency.rb, line 17
def call
  puts 'Loading dependecies, please wait..'

  if gems_to_add.empty?
    say_nothing_needed
  else
    wrap_for_gemfile do
      gems_to_add.each { |gem_name| loader.new(gem_name).call }
    end

    install
  end
end
Also aliased as: load_dependencies
load_dependencies()
Alias for: call

Private Instance Methods

gems_to_add() click to toggle source
# File lib/supercop/actions/loaders/dependency.rb, line 35
def gems_to_add
  gem_list.select { |gem_name| !loaded?(gem_name) }
end
install() click to toggle source
# File lib/supercop/actions/loaders/dependency.rb, line 43
def install
  puts 'Updating your bundle, please wait'
  Bundler.with_clean_env do
    `bundle install`
  end
end
loaded?(gem_name) click to toggle source
# File lib/supercop/actions/loaders/dependency.rb, line 39
def loaded?(gem_name)
  loader.new(gem_name).installed? ? true : false
end
say_nothing_needed() click to toggle source
# File lib/supercop/actions/loaders/dependency.rb, line 50
def say_nothing_needed
  puts 'No need to install anything.'
end
wrap_for_gemfile() { || ... } click to toggle source
# File lib/supercop/actions/loaders/dependency.rb, line 54
def wrap_for_gemfile(&_block)
  file = Supercop.configuration.path('Gemfile')
  file_injector.new(filename: file, line: START_COMMENT).call

  yield

  file_injector.new(filename: file, line: END_COMMENT).call
end