class Gemrat::Gemfile
Attributes
needs_bundle[RW]
needs_bundle?[RW]
path[RW]
Public Class Methods
new(path)
click to toggle source
# File lib/gemrat/gemfile.rb, line 8 def initialize(path) self.path = path self.needs_bundle = false end
Public Instance Methods
add(gem)
click to toggle source
# File lib/gemrat/gemfile.rb, line 13 def add(gem) file = File.open(path, "a+") check(gem, file) if gem.add? file.write "\n#{gem}" puts "#{gem} added to your Gemfile.".green needs_bundle! elsif gem.update? contents = File.read(path) File.open(path,'w') do |f| f.print contents.gsub(/^.*#{gem.name}.*$/, "#{gem}") f.close end puts "Updated '#{gem.name}' to version '#{gem.version}'.".green needs_bundle! end ensure file.close end
Private Instance Methods
check(gem, file)
click to toggle source
# File lib/gemrat/gemfile.rb, line 44 def check(gem, file) @grep_file = file.grep(/gem.*#{gem.name}.*/) @current_gem_version = get_current_gem_version raise DuplicateGemFound if duplicate_gem? gem return unless @current_gem_version =~ /\S/ if @current_gem_version < gem.version prompt_gem_replacement(gem) end end
duplicate_gem?(gem)
click to toggle source
# File lib/gemrat/gemfile.rb, line 66 def duplicate_gem? gem !@grep_file.empty? && (@current_gem_version == gem.version || @current_gem_version.empty?) end
get_current_gem_version()
click to toggle source
# File lib/gemrat/gemfile.rb, line 70 def get_current_gem_version @grep_file.to_s.match(/\d[\d|.]+/).to_s end
input()
click to toggle source
# File lib/gemrat/gemfile.rb, line 74 def input STDIN.gets end
needs_bundle!()
click to toggle source
# File lib/gemrat/gemfile.rb, line 40 def needs_bundle! self.needs_bundle = true end
prompt_gem_replacement(gem)
click to toggle source
# File lib/gemrat/gemfile.rb, line 56 def prompt_gem_replacement(gem) print (Messages::NEWER_GEM_FOUND % [gem.name, gem.version, @current_gem_version]).chomp + " " case input when /n|no/ gem.skip! else gem.update! end end