rails--rails/railties/lib/rails/application.rb

122 lines
2.6 KiB
Ruby
Raw Normal View History

2010-01-22 00:10:31 +00:00
require 'fileutils'
2010-01-23 21:30:17 +00:00
require 'rails/railties_path'
require 'rails/plugin'
2010-01-24 08:00:18 +00:00
require 'rails/engine'
module Rails
class Application < Engine
autoload :Bootstrap, 'rails/application/bootstrap'
2010-01-26 13:58:00 +00:00
autoload :Configurable, 'rails/application/configurable'
2010-01-23 21:30:17 +00:00
autoload :Configuration, 'rails/application/configuration'
autoload :Finisher, 'rails/application/finisher'
autoload :MetalLoader, 'rails/application/metal_loader'
2010-01-23 15:59:32 +00:00
autoload :Railties, 'rails/application/railties'
autoload :RoutesReloader, 'rails/application/routes_reloader'
class << self
private :new
alias :configure :class_eval
def instance
if self == Rails::Application
Rails.application
else
@@instance ||= new
end
end
def inherited(base)
2010-01-24 08:00:18 +00:00
raise "You cannot have more than one Rails::Application" if Rails.application
super
Rails.application = base.instance
end
def respond_to?(*args)
super || instance.respond_to?(*args)
end
protected
def method_missing(*args, &block)
instance.send(*args, &block)
end
end
def require_environment!
2010-01-23 15:59:32 +00:00
environment = config.paths.config.environment.to_a.first
require environment if environment
end
def routes
2010-02-25 00:47:43 +00:00
@routes ||= ActionDispatch::Routing::RouteSet.new
2010-01-23 15:59:32 +00:00
end
def railties
@railties ||= Railties.new(config)
end
2009-12-14 23:54:41 +00:00
def routes_reloader
@routes_reloader ||= RoutesReloader.new
2009-12-14 23:54:41 +00:00
end
def reload_routes!
routes_reloader.reload!
end
2009-12-14 23:54:41 +00:00
def initialize!
run_initializers(self)
self
2009-12-14 23:54:41 +00:00
end
def load_tasks
initialize_tasks
2010-01-23 15:59:32 +00:00
super
railties.all { |r| r.load_tasks }
self
end
def load_generators
initialize_generators
2010-01-23 15:59:32 +00:00
super
railties.all { |r| r.load_generators }
self
2009-11-07 01:21:39 +00:00
end
def app
@app ||= middleware.build(routes)
end
def call(env)
env["action_dispatch.parameter_filter"] = config.filter_parameters
app.call(env)
end
def initializers
initializers = Bootstrap.initializers_for(self)
2010-01-23 15:59:32 +00:00
railties.all { |r| initializers += r.initializers }
initializers += super
initializers += Finisher.initializers_for(self)
initializers
end
protected
def initialize_tasks
require "rails/tasks"
task :environment do
$rails_rake_task = true
initialize!
end
end
def initialize_generators
require "rails/generators"
end
# Application is always reloadable when config.cache_classes is false.
def reloadable?(app)
true
end
end
end