diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2016-02-01 22:09:22 +0100 |
---|---|---|
committer | Kasper Timm Hansen <kaspth@gmail.com> | 2016-02-01 22:09:22 +0100 |
commit | baae952588395a1bc04122b00a94baa5af8cdf35 (patch) | |
tree | 5caf6067ffc8c3ae5e4644a595d118f00a704e12 /railties/lib/rails | |
parent | 0cbcae59dd402ff27f6dbf76659b67a77776fe37 (diff) | |
parent | 8a436fdd98c63cc0a7a6d2c642c18d33421dc6ad (diff) | |
download | rails-baae952588395a1bc04122b00a94baa5af8cdf35.tar.gz rails-baae952588395a1bc04122b00a94baa5af8cdf35.tar.bz2 rails-baae952588395a1bc04122b00a94baa5af8cdf35.zip |
Merge pull request #23225 from vipulnsward/20420-rake-routes-options
Add options for rake routes task
Diffstat (limited to 'railties/lib/rails')
-rw-r--r-- | railties/lib/rails/tasks/routes.rake | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/railties/lib/rails/tasks/routes.rake b/railties/lib/rails/tasks/routes.rake index 1815c2fdc7..499c434ffa 100644 --- a/railties/lib/rails/tasks/routes.rake +++ b/railties/lib/rails/tasks/routes.rake @@ -1,7 +1,35 @@ -desc 'Print out all defined routes in match order, with names. Target specific controller with CONTROLLER=x.' +require 'active_support/deprecation' +require 'active_support/core_ext/string/strip' # for strip_heredoc +require 'optparse' + +desc 'Print out all defined routes in match order, with names. Target specific controller with --controller option - or its -c shorthand.' task routes: :environment do all_routes = Rails.application.routes.routes require 'action_dispatch/routing/inspector' inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes) - puts inspector.format(ActionDispatch::Routing::ConsoleFormatter.new, ENV['CONTROLLER']) + if ARGV.any?{ |argv| argv.start_with? 'CONTROLLER' } + puts <<-eow.strip_heredoc + Passing `CONTROLLER` to `bin/rake routes` is deprecated and will be removed in Rails 5.1. + Please use `bin/rake routes -c controller_name` instead. + eow + end + + routes_filter = nil + routes_filter = {controller: ENV['CONTROLLER']} if ENV['CONTROLLER'] + + OptionParser.new do |opts| + opts.banner = "Usage: rake routes [options]" + opts.on("-c", "--controller [CONTROLLER]") do |controller| + routes_filter = { controller: controller } + end + + opts.on("-g", "--grep [PATTERN]") do |pattern| + routes_filter = pattern + end + + end.parse!(ARGV.reject { |x| x == "routes" }) + + puts inspector.format(ActionDispatch::Routing::ConsoleFormatter.new, routes_filter) + + exit 0 # ensure extra arguments aren't interpreted as Rake tasks end |