<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>railties/lib/rails_generator/generators/applications/app/scm/git.rb</filename>
    </added>
    <added>
      <filename>railties/lib/rails_generator/generators/applications/app/scm/scm.rb</filename>
    </added>
    <added>
      <filename>railties/lib/rails_generator/generators/applications/app/scm/svn.rb</filename>
    </added>
    <added>
      <filename>railties/lib/rails_generator/generators/applications/app/template_runner.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,48 @@
 *2.3.0 [Edge]*
 
+* Add &quot;-m/--template&quot; option to Rails generator to apply a template to the generated application. [Jeremy McAnally]
+
+    This has been extracted from rg - http://github.com/jeremymcanally/rg
+    
+    Example:
+    
+        # template.rb
+        
+        # Install plugins from git or svn
+        plugin &quot;will-paginate&quot;, :git =&gt; &quot;git://github.com/mislav/will_paginate.git&quot;
+        plugin &quot;old-restful-auth&quot;, :svn =&gt; &quot;http://svn.techno-weenie.net/projects/plugins/restful_authentication/&quot;
+    
+        # Add gems to environment.rb
+        gem &quot;jeremymcanally-context&quot;
+        gem &quot;bluecloth&quot;
+    
+        # Vendor file. Data in a string or...
+        vendor(&quot;borrowed.rb&quot;, &lt;&lt;CODE
+          def helpful_method
+            do_something_helpful_here
+          end
+        CODE
+    
+        # ...file data from block return value.
+        # #initializer creates a new initializer file
+        initializer(&quot;crypto.rb&quot;) do
+          salt = &quot;--#{Time.now}--#{rand}--#{srand(Time.now.to_i)}&quot;
+    
+          &quot;SPECIAL_SALT = '#{salt}'&quot;
+        end
+    
+    Usage:
+    
+      To use a template, provide a file path or URL:
+    
+      1. Using a local file :
+
+        rails &lt;application name&gt; -m /path/to/my/template.rb
+        
+      2. Or directly from a URL :
+
+        rails &lt;application name&gt; --template=http://gist.github.com/31208.txt
+
 * Extracted the process scripts (inspector, reaper, spawner) into the plugin irs_process_scripts [DHH]
 
 * Changed Rails.root to return a Pathname object (allows for Rails.root.join('app', 'controllers') =&gt; &quot;#{RAILS_ROOT}/app/controllers&quot;) #1482 [Damian Janowski/?]</diff>
      <filename>railties/CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -8,6 +8,7 @@ if %w(--version -v).include? ARGV.first
 end
 
 freeze   = ARGV.any? { |option| %w(--freeze -f).include?(option) }
+
 app_path = ARGV.first
 
 require File.dirname(__FILE__) + '/../lib/rails_generator'</diff>
      <filename>railties/bin/rails</filename>
    </modified>
    <modified>
      <diff>@@ -154,6 +154,9 @@ module Rails
         File.join(destination_root, relative_destination)
       end
 
+      def after_generate
+      end
+
       protected
         # Convenience method for generator subclasses to record a manifest.
         def record</diff>
      <filename>railties/lib/rails_generator/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -40,6 +40,7 @@ module Rails
         # Replay action manifest.  RewindBase subclass rewinds manifest.
         def invoke!
           manifest.replay(self)
+          after_generate
         end
 
         def dependency(generator_name, args, runtime_options = {})</diff>
      <filename>railties/lib/rails_generator/commands.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 require 'rbconfig'
+require File.dirname(__FILE__) + '/template_runner'
 require 'digest/md5' 
 require 'active_support/secure_random'
 
@@ -37,6 +38,12 @@ class AppGenerator &lt; Rails::Generator::Base
     end
   end
 
+  def after_generate
+    if options[:template]
+      Rails::TemplateRunner.new(@destination_root, options[:template])
+    end
+  end
+
   protected
     def banner
       &quot;Usage: #{$0} /path/to/your/app [options]&quot;
@@ -60,6 +67,11 @@ class AppGenerator &lt; Rails::Generator::Base
       opt.on(&quot;-f&quot;, &quot;--freeze&quot;,
             &quot;Freeze Rails in vendor/rails from the gems generating the skeleton&quot;,
             &quot;Default: false&quot;) { |v| options[:freeze] = v }
+
+      opt.on(&quot;-m&quot;, &quot;--template=path&quot;, String,
+            &quot;Use an application template that lives at path (can be a filesystem path or URL).&quot;,
+            &quot;Default: (none)&quot;) { |v| options[:template] = v }
+
     end
 
 </diff>
      <filename>railties/lib/rails_generator/generators/applications/app/app_generator.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2014d9141aaa8e40a030875de35570b1061b7c2f</id>
    </parent>
  </parents>
  <author>
    <name>Jeremy McAnally</name>
    <login>jm</login>
    <email>jeremymcanally@gmail.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/e8cc4b116c460c524961a07da92da3f323854c15</url>
  <id>e8cc4b116c460c524961a07da92da3f323854c15</id>
  <committed-date>2008-12-02T10:39:11-08:00</committed-date>
  <authored-date>2008-12-02T08:22:27-08:00</authored-date>
  <message>Add &quot;-m/--template&quot; option to Rails generator to apply template to generated application.

Signed-off-by: Pratik Naik &lt;pratiknaik@gmail.com&gt;</message>
  <tree>aac0dee8ad4b1ebcf2f1e71f4cd963c1123003ce</tree>
  <committer>
    <name>Pratik Naik</name>
    <login>lifo</login>
    <email>pratiknaik@gmail.com</email>
  </committer>
</commit>
