module SpecProducer::MissingGemsModule
Public Class Methods
set_up_necessities()
click to toggle source
# File lib/spec_producer/missing_gems_module.rb, line 4 def self.set_up_necessities # TODO: Update spec_helper or rails helper with proper configurations gemfiles = Dir.glob(Rails.root.join('Gemfile')) if gemfiles.size > 0 contents = File.read(gemfiles.first) gems = contents.scan(/gem \'(?<gem>\S*)\'/).flatten.uniq missing_gems = [] missing_gems << 'rspec-rails' unless (gems.include? 'rspec-rails') missing_gems << 'factory_girl_rails' unless (gems.include? 'factory_girl_rails') missing_gems << 'shoulda-matchers' unless (gems.include? 'shoulda-matchers') missing_gems << 'webmock' unless (gems.include? 'webmock') missing_gems << 'rubocop' unless (gems.include? 'rubocop') # No need for capybara if there are no views to parse missing_gems << 'capybara' unless ((gems.include? 'capybara') && Dir["app/views/**/*.erb"] != []) if missing_gems.size > 0 actions_needed = "" useful_info = "\nGems installed:\n" contents << "\n\ngroup :test do\n" missing_gems.each do |gem| contents << " gem '#{gem}'\n" if gem == 'rspec-rails' useful_info << "# Rspec: https://github.com/rspec/rspec-rails\n" elsif gem == 'factory_girl_rails' useful_info << "# FactoryGirl: https://github.com/thoughtbot/factory_girl_rails\n" elsif gem == 'shoulda-matchers' useful_info << "# Shoulda Matchers: https://github.com/thoughtbot/shoulda-matchers\n" elsif gem == 'webmock' actions_needed << "# Add 'require \'webmock/rspec\'' in your spec_helper or rails_helper\n" useful_info << "# Webmock: https://github.com/bblimke/webmock\n" elsif gem == 'rubocop' useful_info << "# RuboCop: https://github.com/bbatsov/rubocop\n" end end contents << "end" f = File.open(gemfiles.first, 'wb+') f.write(contents) f.close if defined?(Bundler) Bundler.with_clean_env do puts "\n\nRunning bundle after setting list of gems in you Gemfile.".colorize(:yellow) system 'bundle install' end end if 'rspec-rails'.in? missing_gems puts "\n\nInitializing Rspec files and helpers.".colorize(:yellow) system 'rails generate rspec:install' end if actions_needed != '' puts "\n\nYou will additionally need to:\n".colorize(:green) puts actions_needed.colorize(:green) end puts useful_info.colorize(:light_blue) else puts 'Could not find anything missing!'.colorize(:light_blue) end else puts "We couldn't find a Gemfile and setting up halted!".colorize(:red) end end