class GemFresh::Missing

Public Class Methods

new() click to toggle source
# File lib/gem_fresh/missing.rb, line 4
def initialize
  parse_gemfile
end

Public Instance Methods

check_for_missing_gems!() click to toggle source
# File lib/gem_fresh/missing.rb, line 8
def check_for_missing_gems!
  if missing_gems.any?
    message = "The following gems are in your Gemfile but not in your gem_fresh.rb file:\n"
    missing_gems.each do |gem_name|
      message << "  #{gem_name}\n"
    end
    raise message
  end
end

Private Instance Methods

gem_names() click to toggle source
# File lib/gem_fresh/missing.rb, line 32
def gem_names
  @gem_lines.map do |gem_line|
    gem_line.split.second.gsub(/[^A-Za-z0-9\-_]/, '')
  end
end
gemfresh() click to toggle source
# File lib/gem_fresh/missing.rb, line 44
def gemfresh
  GemFresh::Config.config
end
missing_gems() click to toggle source
# File lib/gem_fresh/missing.rb, line 20
def missing_gems
  missing_gems = []
  gems_from_gemfresh = gemfresh.all_gems
  gem_names.each do |gem_from_gemfile|
    if not gems_from_gemfresh.include?(gem_from_gemfile)
      missing_gems << gem_from_gemfile
    end
  end
  missing_gems.reject!{|g| g == 'rails'}
  missing_gems
end
parse_gemfile() click to toggle source

TODO: we shouldn't be so tied to Rails in future

# File lib/gem_fresh/missing.rb, line 39
def parse_gemfile
  gemfile = File.join(Rails.root, 'Gemfile')
  @gem_lines = IO.readlines(gemfile).select{|line| line =~ /\A\s*gem/ }
end