aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Vakhov <vakhov@gmail.com>2012-05-04 22:04:53 +0400
committerAlexey Vakhov <vakhov@gmail.com>2012-05-22 08:59:30 +0400
commit1fed1f14fc0ecb375d8a7c542669dad96541582d (patch)
tree66d95d8ac395ce244ab103e6e77bb2fa10efd087
parenta060c41ef77cf3a0e4d236a70f3fef260ff9a261 (diff)
downloadrails-1fed1f14fc0ecb375d8a7c542669dad96541582d.tar.gz
rails-1fed1f14fc0ecb375d8a7c542669dad96541582d.tar.bz2
rails-1fed1f14fc0ecb375d8a7c542669dad96541582d.zip
Fix `rails db -h` and cosmetic fixes in usage banners
Ruby tries to use '-h' as short version of '--header' by default https://github.com/ruby/ruby/blob/trunk/lib/optparse.rb#L1372-1381. To force `rails db -h` prints an usage message we should add the `-h` options explicitly.
-rw-r--r--railties/lib/rails/commands/console.rb2
-rw-r--r--railties/lib/rails/commands/dbconsole.rb7
-rw-r--r--railties/lib/rails/commands/runner.rb2
-rw-r--r--railties/test/commands/dbconsole_test.rb18
4 files changed, 26 insertions, 3 deletions
diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb
index cd6a03fe51..b95df3e545 100644
--- a/railties/lib/rails/commands/console.rb
+++ b/railties/lib/rails/commands/console.rb
@@ -22,7 +22,7 @@ module Rails
options = {}
OptionParser.new do |opt|
- opt.banner = "Usage: console [environment] [options]"
+ opt.banner = "Usage: rails console [environment] [options]"
opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
opt.on("-e", "--environment=name", String,
"Specifies the environment to run this console under (test/development/production).",
diff --git a/railties/lib/rails/commands/dbconsole.rb b/railties/lib/rails/commands/dbconsole.rb
index cdff9c6f86..cc7caffc3d 100644
--- a/railties/lib/rails/commands/dbconsole.rb
+++ b/railties/lib/rails/commands/dbconsole.rb
@@ -42,7 +42,7 @@ module Rails
include_password = false
options = {}
OptionParser.new do |opt|
- opt.banner = "Usage: dbconsole [environment] [options]"
+ opt.banner = "Usage: rails dbconsole [environment] [options]"
opt.on("-p", "--include-password", "Automatically provide the password from database.yml") do |v|
include_password = true
end
@@ -56,6 +56,11 @@ module Rails
options['header'] = h
end
+ opt.on("-h", "--help", "Show this help message.") do
+ puts opt
+ exit
+ end
+
opt.parse!(arguments)
abort opt.to_s unless (0..1).include?(arguments.size)
end
diff --git a/railties/lib/rails/commands/runner.rb b/railties/lib/rails/commands/runner.rb
index 2802981e7a..77f1b15fb4 100644
--- a/railties/lib/rails/commands/runner.rb
+++ b/railties/lib/rails/commands/runner.rb
@@ -9,7 +9,7 @@ if ARGV.first.nil?
end
ARGV.clone.options do |opts|
- opts.banner = "Usage: runner [options] ('Some.ruby(code)' or a filename)"
+ opts.banner = "Usage: rails runner [options] ('Some.ruby(code)' or a filename)"
opts.separator ""
diff --git a/railties/test/commands/dbconsole_test.rb b/railties/test/commands/dbconsole_test.rb
index 57074cd0ad..6d0f5ca073 100644
--- a/railties/test/commands/dbconsole_test.rb
+++ b/railties/test/commands/dbconsole_test.rb
@@ -132,6 +132,24 @@ class Rails::DBConsoleTest < ActiveSupport::TestCase
assert_match /Unknown command-line client for db/, output
end
+ def test_print_help_short
+ stdout = capture(:stdout) do
+ start({}, ['-h'])
+ end
+ assert aborted
+ assert_equal '', output
+ assert_match /Usage:.*dbconsole/, stdout
+ end
+
+ def test_print_help_long
+ stdout = capture(:stdout) do
+ start({}, ['--help'])
+ end
+ assert aborted
+ assert_equal '', output
+ assert_match /Usage:.*dbconsole/, stdout
+ end
+
private
attr_reader :aborted, :output