Skip to content

Instantly share code, notes, and snippets.

@dinjas
Created March 9, 2019 21:49
Show Gist options
  • Save dinjas/9932dcf6a562ca6973ee986697186cf2 to your computer and use it in GitHub Desktop.
Save dinjas/9932dcf6a562ca6973ee986697186cf2 to your computer and use it in GitHub Desktop.
rails rake task to make running common commands consistent - cleanup
# frozen_string_literal: true
namespace :cleanup do
JUMPSTART_TASK = 'cleanup:jumpstart'
ANNOTATE_TASK = 'cleanup:annotate'
ANNOTATE_ROUTES_TASK = 'cleanup:annotate_routes'
RUBOCOP_TASK = 'cleanup:rubocop'
ALL_CLEANUP = [JUMPSTART_TASK,
ANNOTATE_TASK,
ANNOTATE_ROUTES_TASK,
RUBOCOP_TASK].freeze
COMMAND_PREFIX = 'RAILS_ENV=test bundle exec'
JUMPSTART_COMMAND = 'rspec-jumpstart -r -f app'
ANNOTATE_COMMAND = 'annotate -i -s --ck'
ANNOTATE_ROUTES_COMMAND = 'annotate -r'
RUBOCOP_COMMAND = 'rubocop --auto-correct'
desc 'Run all cleanup commands'
task all: :environment do
ALL_CLEANUP.each do |task|
Rake::Task[task].invoke
end
end
desc 'Generate missing specs'
task jumpstart: :environment do
run_cleanup(JUMPSTART_TASK, JUMPSTART_COMMAND)
end
desc 'Update model annotations'
task annotate: :environment do
run_cleanup(ANNOTATE_TASK, ANNOTATE_COMMAND)
end
desc 'Update route annotations'
task annotate_routes: :environment do
run_cleanup(ANNOTATE_ROUTES_TASK, ANNOTATE_ROUTES_COMMAND)
end
desc 'Rubocop cleanup'
task rubocop: :environment do
run_cleanup(RUBOCOP_TASK, RUBOCOP_COMMAND)
end
private
def run_cleanup(task, command)
puts "Starting #{task}"
system("#{COMMAND_PREFIX} #{command}")
puts "Finishing #{task}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment