Sha256: fe3a86ee1c6fd8080f74bdc1801891a4c238ad9fea94d5a319fa3bc9ddf5f67b
Contents?: true
Size: 1.81 KB
Versions: 7
Compression:
Stored size: 1.81 KB
Contents
require "bundler/gem_tasks" require "rspec/core/rake_task" require "logger" @logger = Logger.new(STDOUT) RSpec::Core::RakeTask.new(:spec) desc "Check if source can be required and is correctly required" task :require do dir = File.dirname(__FILE__) gemspec = load_gemspec(dir) # Order is important, assert_can_be_required should be run first assert_can_be_required(dir, gemspec) check_source_files_required(dir, gemspec) check_source_files_included(dir, gemspec) end def load_gemspec(dir) require "bundler/setup" Gem::Specification.find do |spec| spec.full_gem_path.include?(File.dirname(__FILE__)) end end def check_source_files_required(dir, gemspec) require_gem(gemspec) ruby_files = Dir.glob("#{dir}/**/*.rb").reject{ |f| f.include?('/spec/') } required_ruby_files = $LOADED_FEATURES.select { |f| f.include?(dir) } (ruby_files - required_ruby_files).each do |file| @logger.warn("Source file not required when loading gem: #{file.sub("#{dir}/", '')}") end end def check_source_files_included(dir, gemspec) ruby_files_relative = Dir.glob("#{dir}/**/*.rb").reject { |f| f.include?('/spec/') }.map { |f| f.sub("#{dir}/", '') } (ruby_files_relative - gemspec.files.select { |f| f.end_with?('.rb') }).each do |file| @logger.warn("File ignored when building gem because it's not added to git: #{file}") end end def assert_can_be_required(dir, gemspec) local_load_paths = $LOAD_PATH.select { |path| path.include?(dir) } $LOAD_PATH.reject! { |path| local_load_paths.include?(path) } begin require_gem(gemspec) rescue LoadError => e @logger.error("Gem source cannot be required relatively: #{e}") raise ensure $LOAD_PATH.push(*local_load_paths) end end def require_gem(gemspec) require_relative "lib/#{gemspec.name.gsub('-', '/')}" end task :default => [:require, :spec]
Version data entries
7 entries across 7 versions & 1 rubygems
Version | Path |
---|---|
autowow-0.8.0 | Rakefile |
autowow-0.7.0 | Rakefile |
autowow-0.6.3 | Rakefile |
autowow-0.6.0 | Rakefile |
autowow-0.5.0 | Rakefile |
autowow-0.4.1 | Rakefile |
autowow-0.4.0 | Rakefile |