require "bundler/gem_tasks" desc "Run unit tests" task :default => 'test:unit' task :test => 'test:unit' if RUBY_VERSION < '2.3' GEMFILES = ['3.0.gemfile', '4.0.gemfile', '5.0.gemfile'] else GEMFILES = ['4.0.gemfile', '5.0.gemfile'] end namespace :bundle do desc 'Install dependencies for all the Gemfiles in /gemfiles. Optionally define env variable RAILS_VERSIONS. E.g. RAILS_VERSIONS=3.0,5.0' task :install do unless defined?(JRUBY_VERSION) puts '-'*80 gemfiles = ENV['RAILS_VERSIONS'] ? ENV['RAILS_VERSIONS'].split(',').map { |v| "#{v}.gemfile"} : GEMFILES gemfiles.each do |gemfile| Bundler.with_clean_env do sh "bundle install --gemfile #{File.expand_path('../gemfiles/'+gemfile, __FILE__)}" end puts '-'*80 end end end end # ----- Test tasks ------------------------------------------------------------ require 'rake/testtask' namespace :test do desc 'Run all tests. Optionally define env variable RAILS_VERSIONS. E.g. RAILS_VERSIONS=3.0,5.0' task :all, [:rails_versions] do |task, args| gemfiles = ENV['RAILS_VERSIONS'] ? ENV['RAILS_VERSIONS'].split(',').map {|v| "#{v}.gemfile"} : GEMFILES puts '-' * 80 gemfiles.each do |gemfile| sh "BUNDLE_GEMFILE='#{File.expand_path("../gemfiles/#{gemfile}", __FILE__)}' " + " bundle exec rspec" puts '-' * 80 end end end # ----- Documentation tasks --------------------------------------------------- require 'yard' YARD::Rake::YardocTask.new(:doc) do |t| t.options = %w| --embed-mixins --markup=markdown | end # ----- Code analysis tasks --------------------------------------------------- if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9' require 'cane/rake_task' Cane::RakeTask.new(:quality) do |cane| cane.abc_max = 15 cane.no_style = true end end