aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/railtie.rb
diff options
context:
space:
mode:
authorCarl Lerche <carllerche@mac.com>2009-12-31 13:11:54 -0800
committerCarl Lerche <carllerche@mac.com>2009-12-31 13:12:52 -0800
commitae7ada1fde1648a5c81b9e6adf74d515e0bbe0a5 (patch)
tree385b3655a8b8ef5355e4c85f7af81edfab5ef777 /activerecord/lib/active_record/railtie.rb
parente749424dfa38a0300a621b772eae96f9cc5d2555 (diff)
downloadrails-ae7ada1fde1648a5c81b9e6adf74d515e0bbe0a5.tar.gz
rails-ae7ada1fde1648a5c81b9e6adf74d515e0bbe0a5.tar.bz2
rails-ae7ada1fde1648a5c81b9e6adf74d515e0bbe0a5.zip
Some railties cleanup:
* Rename <framework>/rails.rb -> <framework>/railtie.rb * Rails::Plugin -> Rails::Railtie * Rails::Plugin::Vendored -> Rails::Plugin
Diffstat (limited to 'activerecord/lib/active_record/railtie.rb')
-rw-r--r--activerecord/lib/active_record/railtie.rb71
1 files changed, 71 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb
new file mode 100644
index 0000000000..657ee738c0
--- /dev/null
+++ b/activerecord/lib/active_record/railtie.rb
@@ -0,0 +1,71 @@
+# For now, action_controller must always be present with
+# rails, so let's make sure that it gets required before
+# here. This is needed for correctly setting up the middleware.
+# In the future, this might become an optional require.
+require "active_record"
+require "action_controller/railtie"
+require "rails"
+
+module ActiveRecord
+ class Railtie < Rails::Railtie
+ plugin_name :active_record
+
+ rake_tasks do
+ load "active_record/railties/databases.rake"
+ end
+
+ initializer "active_record.set_configs" do |app|
+ app.config.active_record.each do |k,v|
+ ActiveRecord::Base.send "#{k}=", v
+ end
+ end
+
+ # This sets the database configuration from Configuration#database_configuration
+ # and then establishes the connection.
+ initializer "active_record.initialize_database" do |app|
+ ActiveRecord::Base.configurations = app.config.database_configuration
+ ActiveRecord::Base.establish_connection
+ end
+
+ initializer "active_record.initialize_timezone" do
+ ActiveRecord::Base.time_zone_aware_attributes = true
+ ActiveRecord::Base.default_timezone = :utc
+ end
+
+ # Expose database runtime to controller for logging.
+ initializer "active_record.log_runtime" do |app|
+ require "active_record/railties/controller_runtime"
+ ActionController::Base.send :include, ActiveRecord::Railties::ControllerRuntime
+ end
+
+ # Setup database middleware after initializers have run
+ initializer "active_record.initialize_database_middleware" do |app|
+ middleware = app.config.middleware
+ if middleware.include?(ActiveRecord::SessionStore)
+ middleware.insert_before ActiveRecord::SessionStore, ActiveRecord::ConnectionAdapters::ConnectionManagement
+ middleware.insert_before ActiveRecord::SessionStore, ActiveRecord::QueryCache
+ else
+ middleware.use ActiveRecord::ConnectionAdapters::ConnectionManagement
+ middleware.use ActiveRecord::QueryCache
+ end
+ end
+
+ initializer "active_record.load_observers" do
+ ActiveRecord::Base.instantiate_observers
+ end
+
+ # TODO: ActiveRecord::Base.logger should delegate to its own config.logger
+ initializer "active_record.logger" do
+ ActiveRecord::Base.logger ||= ::Rails.logger
+ end
+
+ initializer "active_record.notifications" do
+ require 'active_support/notifications'
+
+ ActiveSupport::Notifications.subscribe("sql") do |name, before, after, instrumenter_id, payload|
+ ActiveRecord::Base.connection.log_info(payload[:sql], payload[:name], (after - before) * 1000)
+ end
+ end
+
+ end
+end