Permalink
Browse files

Don't require using application_name before options

Before this commit options for `rails new` and `rails plugin new` had to
be passed in a strict order, trying to execute a following command:

    rails new -J path/to/app

resulted in an error.

This commit fixes the situation and allows to pass path to app anywhere
after `new`
  • Loading branch information...
1 parent ca50043 commit 47ac67b8d4f77e22ce1cae5c7bf836b0d6325d1e @drogus drogus committed Sep 7, 2013
View
@@ -1,25 +1,30 @@
+* Don't require passing path to app before options in `rails new`
+ and `rails plugin new`
+
+ *Piotr Sarnacki*
+
* rake notes now searches *.less files
*Josh Crowder*
* Generate nested route for namespaced controller generated using
`rails g controller`.
Fixes #11532.
-
+
Example:
-
+
rails g controller admin/dashboard index
-
+
# Before:
get "dashboard/index"
-
+
# After:
namespace :admin do
get "dashboard/index"
end
-
+
*Prathamesh Sonpatki*
-
+
* Fix the event name of action_dispatch requests.
*Rafael Mendonça França*
@@ -18,6 +18,10 @@ class AppBase < Base # :nodoc:
argument :app_path, type: :string
+ def self.strict_args_position
+ false
+ end
+
def self.add_shared_options_for(name)
class_option :template, type: :string, aliases: '-m',
desc: "Path to some #{name} template (can be a filesystem path or URL)"
@@ -151,18 +151,12 @@ class AppGenerator < AppBase # :nodoc:
desc: "Show Rails version number and quit"
def initialize(*args)
- if args[0].blank?
- if args[1].blank?
- # rails new
- raise Error, "Application name should be provided in arguments. For details run: rails --help"
- else
- # rails new --skip-bundle my_new_application
- raise Error, "Options should be given after the application name. For details run: rails --help"
- end
- end
-
super
+ unless app_path
+ raise Error, "Application name should be provided in arguments. For details run: rails --help"
+ end
+
if !options[:skip_active_record] && !DATABASES.include?(options[:database])
raise Error, "Invalid value for --database option. Supported for preconfiguration are: #{DATABASES.join(", ")}."
end
@@ -176,10 +176,12 @@ class PluginGenerator < AppBase # :nodoc:
"skip adding entry to Gemfile"
def initialize(*args)
- raise Error, "Options should be given after the plugin name. For details run: rails plugin new --help" if args[0].blank?
-
@dummy_path = nil
super
+
+ unless plugin_path
+ raise Error, "Plugin name should be provided in arguments. For details run: rails plugin new --help"
+ end
end
public_task :create_root
@@ -46,11 +46,6 @@ def test_test_unit_is_skipped_if_required
assert_no_file "test"
end
- def test_options_before_application_name_raises_an_error
- content = capture(:stderr){ run_generator(["--pretend", destination_root]) }
- assert_match(/Options should be given after the \w+ name. For details run: rails( plugin new)? --help\n/, content)
- end
-
def test_name_collision_raises_an_error
reserved_words = %w[application destroy plugin runner test]
reserved_words.each do |reserved|

0 comments on commit 47ac67b

Please sign in to comment.