Method: Taft.install_gems

Defined in:
lib/taft.rb

.install_gems(bundled_gem_path) ⇒ Object



254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
# File 'lib/taft.rb', line 254

def self.install_gems(bundled_gem_path)
    puts "\nWill first install all gems bundled in with the TAFT gem."

    gem_list = Dir.entries(bundled_gem_path)
    gem_list.delete(".")
    gem_list.delete("..")
    gems_to_install = []
    gem_list.each do |gem_name|
        # For each gem, try to require it. Only install those that couldn't be required.
        begin
            gem_base_name = gem_name.gsub(TEMPLATE_GEM_NAME_REGEX, "")
            require gem_base_name
        rescue LoadError
            puts "#{gem_base_name} could not be required; will install #{gem_name}"
            gems_to_install << gem_name
        end
    end

    if gems_to_install.empty?
        puts "All required gems are already installed"
    else
        puts "Will install the following gems :"
        gems_to_install.each {|gem_name| puts gem_name }

        Dir.chdir(bundled_gem_path) # set this to be the working directory while installing the gems
        gems_to_install.each do |gem_name|
            puts "\nNow installing #{gem_name}..."
            system("gem install #{gem_name}")
            puts "Gem installed."
        end
        Dir.chdir(base_wd) # reset the working directory
    end
end