Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Usage file in generators shouldn't be fetched only based on source_root

In case `source_roout` is not set, `default_source_root` is used,
which includes also `templates` directory. If there is no `templates`
directory, `default_source_root` is not available and USAGE will not
be displayed. USAGE should be also checked based on default
directory excluding `templates`.
  • Loading branch information...
commit fff3e75e1cf777f4b444d08c153065ab4264fa2e 1 parent fa1645a
Piotr Sarnacki drogus authored
21 railties/lib/rails/generators/base.rb
View
@@ -31,10 +31,9 @@ def self.source_root(path=nil)
# root otherwise uses a default description.
def self.desc(description=nil)
return super if description
- usage = source_root && File.expand_path("../USAGE", source_root)
- @desc ||= if usage && File.exist?(usage)
- ERB.new(File.read(usage)).result(binding)
+ @desc ||= if usage_path
+ ERB.new(File.read(usage_path)).result(binding)
else
"Description:\n Create #{base_name.humanize.downcase} files for #{generator_name} generator."
end
@@ -213,7 +212,8 @@ def self.class_option(name, options={}) #:nodoc:
# root, you should use source_root.
def self.default_source_root
return unless base_name && generator_name
- path = File.expand_path(File.join(base_name, generator_name, 'templates'), base_root)
+ return unless default_generator_root
+ path = File.join(default_generator_root, 'templates')
path if File.exists?(path)
end
@@ -373,6 +373,19 @@ def self.add_shebang_option!
}
end
+ def self.usage_path
+ paths = [
+ source_root && File.expand_path("../USAGE", source_root),
+ default_generator_root && File.join(default_generator_root, "USAGE")
+ ]
+ paths.compact.detect { |path| File.exists? path }
+ end
+
+ def self.default_generator_root
+ path = File.expand_path(File.join(base_name, generator_name), base_root)
+ path if File.exists?(path)
+ end
+
end
end
end
2  railties/test/generators/app_generator_test.rb
View
@@ -302,7 +302,7 @@ def test_usage_read_from_file
end
def test_default_usage
- File.expects(:exist?).returns(false)
+ Rails::Generators::AppGenerator.expects(:usage_path).returns(nil)
assert_match(/Create rails files for app generator/, Rails::Generators::AppGenerator.desc)
end
4 railties/test/generators/migration_generator_test.rb
View
@@ -152,4 +152,8 @@ def test_should_create_empty_migrations_if_name_not_start_with_add_or_remove
end
end
end
+
+ def test_properly_identifies_usage_file
+ assert generator_class.send(:usage_path)
+ end
end
Please sign in to comment.
Something went wrong with that request. Please try again.