<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>railties/lib/rails/generators/rails/app/templates/script/console.tt</filename>
    </added>
    <added>
      <filename>railties/lib/rails/generators/rails/app/templates/script/dbconsole.tt</filename>
    </added>
    <added>
      <filename>railties/lib/rails/generators/rails/app/templates/script/server.tt</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -3,11 +3,6 @@ module Rails
     include Initializable
 
     class &lt;&lt; self
-      def inherited(klass)
-        Rails.application ||= klass unless klass.name =~ /Rails/
-        super
-      end
-
       # Stub out App initialize
       def initialize!
         new
@@ -32,12 +27,21 @@ module Rails
         config.root
       end
 
+      def load_tasks
+        require &quot;rails/tasks&quot;
+        task :environment do
+          $rails_rake_task = true
+          initialize!
+        end
+      end
+
       def call(env)
         new.call(env)
       end
     end
 
     def initialize
+      Rails.application ||= self
       run_initializers(self)
     end
 
@@ -45,6 +49,10 @@ module Rails
       self.class.config
     end
 
+    def root
+      config.root
+    end
+
     alias configuration config
 
     def middleware</diff>
      <filename>railties/lib/rails/application.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,8 +6,12 @@ module Rails
   class Console
     ENVIRONMENTS = %w(production development test)
 
-    def self.start
-      new.start
+    def self.start(app)
+      new(app).start
+    end
+
+    def initialize(app)
+      @app = app
     end
 
     def start
@@ -25,7 +29,7 @@ module Rails
         ENV['RAILS_ENV'] = ENVIRONMENTS.find { |e| e.index(env) } || env
       end
 
-      require &quot;#{Rails.root}/config/environment&quot;
+      @app.initialize!
       require &quot;rails/console_app&quot;
       require &quot;rails/console_sandbox&quot; if options[:sandbox]
       require &quot;rails/console_with_helpers&quot;</diff>
      <filename>railties/lib/rails/commands/console.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,8 +4,12 @@ require 'optparse'
 
 module Rails
   class DBConsole
-    def self.start
-      new.start
+    def self.start(app)
+      new(app).start
+    end
+
+    def initialize(app)
+      @app = app
     end
 
     def start
@@ -31,7 +35,7 @@ module Rails
       end
 
       env = ARGV.first || ENV['RAILS_ENV'] || 'development'
-      unless config = YAML::load(ERB.new(IO.read(&quot;#{Rails.root}/config/database.yml&quot;)).result)[env]
+      unless config = YAML::load(ERB.new(IO.read(&quot;#{@app.root}/config/database.yml&quot;)).result)[env]
         abort &quot;No database is configured for the environment '#{env}'&quot;
       end
 </diff>
      <filename>railties/lib/rails/commands/dbconsole.rb</filename>
    </modified>
    <modified>
      <diff>@@ -37,6 +37,15 @@ module Rails
       Options.new
     end
 
+    def self.start(app)
+      new(app).start
+    end
+
+    def initialize(app)
+      super() # Call Rack::Server#initialize without passing any options to use.
+      @app = app
+    end
+
     def start
       puts &quot;=&gt; Booting #{ActiveSupport::Inflector.demodulize(server)}&quot;
       puts &quot;=&gt; Rails #{Rails.version} application starting on http://#{options[:Host]}:#{options[:Port]}&quot;
@@ -54,20 +63,24 @@ module Rails
 
     def middleware
       middlewares = []
-      middlewares &lt;&lt; [Rails::Rack::LogTailer] unless options[:daemonize]
+      middlewares &lt;&lt; [Rails::Rack::LogTailer, log_path] unless options[:daemonize]
       middlewares &lt;&lt; [Rails::Rack::Debugger]  if options[:debugger]
       Hash.new(middlewares)
     end
 
+    def log_path
+      &quot;#{File.expand_path(@app.root)}/log/#{options[:environment]}.log&quot;
+    end
+
     def default_options
       {
         :Port        =&gt; 3000,
         :Host        =&gt; &quot;0.0.0.0&quot;,
         :environment =&gt; (ENV['RAILS_ENV'] || &quot;development&quot;).dup,
-        :rack_file   =&gt; &quot;#{Rails.root}/config.ru&quot;,
+        :rack_file   =&gt; &quot;#{@app.root}/config.ru&quot;,
         :daemonize   =&gt; false,
         :debugger    =&gt; false,
-        :pid         =&gt; &quot;#{Rails.root}/tmp/pids/server.pid&quot;,
+        :pid         =&gt; &quot;#{@app.root}/tmp/pids/server.pid&quot;,
         :AccessLog   =&gt; []
       }
     end</diff>
      <filename>railties/lib/rails/commands/server.rb</filename>
    </modified>
    <modified>
      <diff>@@ -48,9 +48,9 @@ module Rails::Generators
     end
 
     def create_root_files
-      copy_file &quot;Rakefile&quot;
       copy_file &quot;README&quot;
-      copy_file &quot;config.ru&quot;
+      template &quot;Rakefile&quot;
+      template &quot;config.ru&quot;
       template &quot;Gemfile&quot;
     end
 
@@ -181,6 +181,10 @@ module Rails::Generators
         @app_name ||= File.basename(destination_root)
       end
 
+      def app_const
+        @app_const ||= app_name.classify
+      end
+
       def app_secret
         ActiveSupport::SecureRandom.hex(64)
       end</diff>
      <filename>railties/lib/rails/generators/rails/app/app_generator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,4 +7,4 @@ require 'rake'
 require 'rake/testtask'
 require 'rake/rdoctask'
 
-require 'rails/tasks'
+&lt;%= app_const %&gt;.load_tasks</diff>
      <filename>railties/lib/rails/generators/rails/app/templates/Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -2,4 +2,4 @@
 require ::File.expand_path('../config/environment',  __FILE__)
 
 # Dispatch the request
-run Rails.application
+run &lt;%= app_const%&gt;</diff>
      <filename>railties/lib/rails/generators/rails/app/templates/config.ru</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 require File.expand_path('../boot', __FILE__)
 
-Rails::Initializer.run do |config|
+class &lt;%= app_const %&gt; &lt; Rails::Application
   # Settings in config/environments/* take precedence over those specified here.
   # Application configuration should go into files in config/initializers
   # -- all .rb files in that directory are automatically loaded.</diff>
      <filename>railties/lib/rails/generators/rails/app/templates/config/application.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,4 +2,4 @@
 require File.expand_path('../application', __FILE__)
 
 # Initialize the rails application
-Rails.initialize!
+&lt;%= app_const %&gt;.initialize!</diff>
      <filename>railties/lib/rails/generators/rails/app/templates/config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,10 @@
 module Rails
   module Rack
     class LogTailer
-      EnvironmentLog = &quot;#{File.expand_path(Rails.root)}/log/#{Rails.env}.log&quot;
-
       def initialize(app, log = nil)
         @app = app
 
-        path = Pathname.new(log || EnvironmentLog).cleanpath
+        path = Pathname.new(log || &quot;#{File.expand_path(Rails.root)}/log/#{Rails.env}.log&quot;).cleanpath
         @cursor = ::File.size(path)
         @last_checked = Time.now.to_f
 </diff>
      <filename>railties/lib/rails/rack/log_tailer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,4 @@
 task :default =&gt; :test
-task :environment do
-  $rails_rake_task = true
-  require(File.join(Rails.root, 'config', 'environment'))
-end
 
 task :rails_env do
   unless defined? RAILS_ENV</diff>
      <filename>railties/lib/rails/tasks/misc.rake</filename>
    </modified>
    <modified>
      <diff>@@ -7,21 +7,8 @@ module ApplicationTests
     include ActiveSupport::Testing::Isolation
 
     def rackup
-      config = &quot;#{app_path}/config.ru&quot;
-      # Copied from ActionDispatch::Utils.parse_config
-      # ActionDispatch is not necessarily available at this point.
-      require 'rack'
-      if config =~ /\.ru$/
-        cfgfile = ::File.read(config)
-        if cfgfile[/^#\\(.*)/]
-          opts.parse! $1.split(/\s+/)
-        end
-        inner_app = eval &quot;Rack::Builder.new {( &quot; + cfgfile + &quot;\n )}.to_app&quot;,
-                         nil, config
-      else
-        require config
-        inner_app = Object.const_get(::File.basename(config, '.rb').capitalize)
-      end
+      require &quot;rack&quot;
+      Rack::Builder.parse_file(&quot;#{app_path}/config.ru&quot;)
     end
 
     def setup
@@ -40,14 +27,14 @@ module ApplicationTests
 
     test &quot;Rails.application is available after config.ru has been racked up&quot; do
       rackup
-      assert Rails.application &lt; Rails::Application
+      assert Rails.application.is_a?(Rails::Application)
     end
 
     # Passenger still uses AC::Dispatcher, so we need to
     # keep it working for now
     test &quot;deprecated ActionController::Dispatcher still works&quot; do
       rackup
-      assert ActionController::Dispatcher.new &lt; Rails::Application
+      assert ActionController::Dispatcher.new.is_a?(Rails::Application)
     end
 
     test &quot;the config object is available on the application object&quot; do</diff>
      <filename>railties/test/application/load_test.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>railties/lib/rails/generators/rails/app/templates/script/console</filename>
    </removed>
    <removed>
      <filename>railties/lib/rails/generators/rails/app/templates/script/dbconsole</filename>
    </removed>
    <removed>
      <filename>railties/lib/rails/generators/rails/app/templates/script/server</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>a2cb90c0c246e772e9735ff59f5517e3dee313ff</id>
    </parent>
  </parents>
  <author>
    <name>Carlhuda</name>
    <login></login>
    <email>carlhuda@Carlhudas-iMac.local</email>
  </author>
  <url>http://github.com/rails/rails/commit/530b8ff5ae811e0dd5e1343b478f42eed6fffdbd</url>
  <id>530b8ff5ae811e0dd5e1343b478f42eed6fffdbd</id>
  <committed-date>2009-11-24T14:36:30-08:00</committed-date>
  <authored-date>2009-11-24T13:03:24-08:00</authored-date>
  <message>Have script/* and Rakefile use the application object</message>
  <tree>bbff1bbfbf0c889a78ce6badf93aab0d1f6b2ed1</tree>
  <committer>
    <name>Carlhuda</name>
    <login></login>
    <email>carlhuda@Carlhudas-iMac.local</email>
  </committer>
</commit>
