aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/configuration.rb3
-rw-r--r--railties/lib/rails/engine.rb4
-rw-r--r--railties/lib/rails/engine/configuration.rb1
-rw-r--r--railties/lib/rails/generators.rb5
-rw-r--r--railties/lib/rails/generators/base.rb3
-rw-r--r--railties/test/application/generators_test.rb15
-rw-r--r--railties/test/generators/generators_test_helper.rb1
7 files changed, 18 insertions, 14 deletions
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index 7887a5d25f..50675d19b8 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -88,12 +88,13 @@ module Rails
end
class Generators #:nodoc:
- attr_accessor :aliases, :options, :fallbacks, :colorize_logging
+ attr_accessor :aliases, :options, :templates, :fallbacks, :colorize_logging
def initialize
@aliases = Hash.new { |h,k| h[k] = {} }
@options = Hash.new { |h,k| h[k] = {} }
@fallbacks = {}
+ @templates = []
@colorize_logging = true
end
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index 33d62c8155..5983a9ee6b 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -102,6 +102,10 @@ module Rails
app.metal_loader.paths.unshift(*paths.app.metals.to_a)
end
+ initializer :add_generator_templates do |app|
+ config.generators.templates.unshift(*paths.lib.templates.to_a)
+ end
+
initializer :load_application_initializers do
paths.config.initializers.to_a.sort.each do |initializer|
load(initializer)
diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb
index 7d6de91430..93b882f874 100644
--- a/railties/lib/rails/engine/configuration.rb
+++ b/railties/lib/rails/engine/configuration.rb
@@ -21,6 +21,7 @@ module Rails
paths.app.views "app/views"
paths.lib "lib", :load_path => true
paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
+ paths.lib.templates "lib/templates"
paths.config "config"
paths.config.initializers "config/initializers", :glob => "**/*.rb"
paths.config.locales "config/locales", :glob => "*.{rb,yml}"
diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb
index 5d95f2fa52..5779357226 100644
--- a/railties/lib/rails/generators.rb
+++ b/railties/lib/rails/generators.rb
@@ -66,6 +66,11 @@ module Rails
aliases.deep_merge! config.aliases
options.deep_merge! config.options
fallbacks.merge! config.fallbacks
+ templates_path.concat config.templates
+ end
+
+ def self.templates_path
+ @templates_path ||= []
end
def self.aliases #:nodoc:
diff --git a/railties/lib/rails/generators/base.rb b/railties/lib/rails/generators/base.rb
index dfa0d573c9..c801e2fec3 100644
--- a/railties/lib/rails/generators/base.rb
+++ b/railties/lib/rails/generators/base.rb
@@ -213,8 +213,7 @@ module Rails
if base.name && base.name !~ /Base$/
Rails::Generators.subclasses << base
- if defined?(Rails.root) && Rails.root
- path = File.expand_path(File.join(Rails.root, 'lib', 'templates'))
+ Rails::Generators.templates_path.each do |path|
if base.name.include?('::')
base.source_paths << File.join(path, base.base_name, base.generator_name)
else
diff --git a/railties/test/application/generators_test.rb b/railties/test/application/generators_test.rb
index 25fa100275..712c8bef36 100644
--- a/railties/test/application/generators_test.rb
+++ b/railties/test/application/generators_test.rb
@@ -52,30 +52,23 @@ module ApplicationTests
end
end
- test "generators set rails fallbacks" do
- with_config do |c|
- c.generators.fallbacks[:shoulda] = :test_unit
- expected = { :shoulda => :test_unit }
- assert_equal expected, c.generators.fallbacks
- end
- end
-
- test "generators aliases, options and fallbacks on initialization" do
+ test "generators aliases, options, templates and fallbacks on initialization" do
add_to_config <<-RUBY
config.generators.rails :aliases => { :test_framework => "-w" }
config.generators.orm :datamapper
config.generators.test_framework :rspec
config.generators.fallbacks[:shoulda] = :test_unit
+ config.generators.templates << "some/where"
RUBY
# Initialize the application
require "#{app_path}/config/environment"
require "rails/generators"
- Rails::Generators.configure!
assert_equal :rspec, Rails::Generators.options[:rails][:test_framework]
assert_equal "-w", Rails::Generators.aliases[:rails][:test_framework]
- assert_equal :test_unit, Rails::Generators.fallbacks[:shoulda]
+ assert_equal Hash[:shoulda => :test_unit], Rails::Generators.fallbacks
+ assert_equal ["#{app_path}/lib/templates", "some/where"], Rails::Generators.templates_path
end
test "generators no color on initialization" do
diff --git a/railties/test/generators/generators_test_helper.rb b/railties/test/generators/generators_test_helper.rb
index 3cd16a69f9..32be99b144 100644
--- a/railties/test/generators/generators_test_helper.rb
+++ b/railties/test/generators/generators_test_helper.rb
@@ -6,6 +6,7 @@ module Rails
end
end
Rails.application.config.root = Rails.root
+Rails.application.config.generators.templates = [File.join(Rails.root, "lib", "templates")]
require 'rails/generators'
require 'rails/generators/test_case'