class AddGem

Attributes

gemName[RW]
gemsFound[RW]

Public Class Methods

gems() click to toggle source
# File lib/envGen/add_gem.rb, line 8
def self.gems
  @@gems
end
new(input) click to toggle source
# File lib/envGen/add_gem.rb, line 12
def initialize(input) # input is gem name, called with @gemName
  @gemName = input
end

Public Instance Methods

exactGem?(gemString) click to toggle source
# File lib/envGen/add_gem.rb, line 21
def exactGem?(gemString) # takes in a search term and a gem to match against
  gemString.split(" ").first == gemName.downcase
end
findPartialNames() click to toggle source
# File lib/envGen/add_gem.rb, line 55
def findPartialNames # partial name search
  gemsFound = []
  puts "Searching through #{@@gems.count} gems..."
  AddGem.gems.each do |gemString| # searching through gems + version numbers
    if exactGem?(gemString)
      gemsFound.unshift("** #{gemString}") # highlights exact match
    elsif gemString.include?(gemName.downcase)
      gemsFound << gemString
    end
  end
  gemsFound
end
gemEntry() click to toggle source
# File lib/envGen/add_gem.rb, line 45
def gemEntry # handles gem entry
  if !inConfig? && gemExists?
    writeExactGem
  elsif inConfig? && gemExists? # add gem if doesn't exist
    puts "'#{gemName}' already added"
  else
    noExactGem
  end
end
gemExists?() click to toggle source
# File lib/envGen/add_gem.rb, line 25
def gemExists?
  @@gems.select {|gem| gem.split(" ").first == gemName }.count > 0
end
gemSearch() click to toggle source
# File lib/envGen/add_gem.rb, line 68
def gemSearch
  gemsFound = findPartialNames
  if gemsFound.count == 0
    puts "No exact match for '#{gemName.downcase}' found"
  else
    puts "\nFound #{gemsFound.count} gems:"
    gemsFound.each {|gem| puts gem}
  end
end
inConfig?() click to toggle source
# File lib/envGen/add_gem.rb, line 16
def inConfig? # looks through environment for gem
  # binding.pry
  File.readlines("config/environment.rb").grep("gem '#{gemName}'\n").count > 0
end
noExactGem() click to toggle source
# File lib/envGen/add_gem.rb, line 40
def noExactGem
  puts "No exact match for '#{gemName}' found"
  puts "Search for partial gem name with 'gem -s [gem]'"
end
write() click to toggle source
# File lib/envGen/add_gem.rb, line 29
def write
  File.open("config/environment.rb", "a") {|env|
    env.puts "gem '#{gemName}'"
  }
end
writeExactGem() click to toggle source
# File lib/envGen/add_gem.rb, line 35
def writeExactGem
  write
  puts "Added '#{gemName}'"
end