require ‘find’ require ‘bundler’

desc ‘Check for C extensions used in the projects’ task :ext_check do

check_gems

end

private

def check_gems

gems_including_c_extension = []

get_gem_list.each do |gem_name|
  gems_including_c_extension << gem_name if has_c_extension?(gem_name)
end

if gems_including_c_extension.any?
  puts ""
  puts "Gems with C extensions:"
  puts ""
  puts gems_including_c_extension
else
  puts "There are no gems with C extensions"
end

end

def get_gem_list

Bundler.load.specs.map { |spec| spec.name }

end

def has_c_extension?(gem_name)

Find.find(get_gem_path(gem_name)).select { |p| /extconf.rb\z/ =~ p }.any?

end

def get_gem_path(gem_name)

Bundler.rubygems.find_name(gem_name).first.full_gem_path

end