require 'rubygems' require "bundler/gem_tasks" require 'bundler/setup' require 'rake' namespace :ruby_app do desc 'Monitor log' task :monitor do |task| system("cd ./lib/ruby_app && > ./log/application.log && clear && tail -f ./log/application.log") end desc 'Create console' task :console do |task| system("cd ./lib/ruby_app && clear && bundle exec ../../bin/ruby_app console") end desc 'Run' task :run do |task| system("cd ./lib/ruby_app && clear && bundle exec ../../bin/ruby_app run") end desc 'Get version' task :version do |task| puts RubyApp::VERSION end desc 'Push to master, release, and increment version' task :release_next_version, :next_version do |task, arguments| if arguments.next_version version_file = File.join(RubyApp::ROOT, %w[version.rb]) system "git push origin master && rake release && sed 's|[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*|#{arguments.next_version}|g' < '#{version_file}' > '#{version_file}.out' && rm '#{version_file}' && mv '#{version_file}.out' '#{version_file}' && git commit --all --message='Incrementing version'" else puts "The next version is required." end end namespace :test do namespace :features do desc 'Run feature tests generating a failure file' task :all do |task| system("bundle exec cucumber --format rerun --tags ~@broken --require features --out failures_out.txt; cat failures_out.txt") end desc 'Rerun failed feature tests' task :failures do |task| system("mv failures_out.txt failures_in.txt; bundle exec cucumber --format rerun --tags ~@broken --require features --out failures_out.txt @failures_in.txt; cat failures_out.txt") end desc 'Run feature tests for the given feature file' task :one, :file do |task, arguments| system("bundle exec cucumber --format pretty --tags ~@broken --require features '#{arguments.file}'") end end desc 'Run RSpec tests' task :specs, :file, :line do |task, arguments| if arguments.file if arguments.line system("bundle exec rspec #{arguments.file} --line_number=#{arguments.line} --format=documentation --colour") else system("bundle exec rspec #{arguments.file} --format=documentation --colour") end else system("bundle exec rspec spec/ --format=documentation --colour") end end desc 'Run all tests' task :all => ['ruby_app:test:specs', 'ruby_app:test:features:all'] end end