Skip to content

Commit

Permalink
Autoload ActiveRecord files
Browse files Browse the repository at this point in the history
  • Loading branch information
josh committed Nov 24, 2008
1 parent 426a86a commit 7254d23
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 55 deletions.
78 changes: 36 additions & 42 deletions activerecord/lib/active_record.rb
Expand Up @@ -31,51 +31,45 @@
end
end

require 'active_record/base'
require 'active_record/named_scope'
require 'active_record/observer'
require 'active_record/query_cache'
require 'active_record/validations'
require 'active_record/callbacks'
require 'active_record/reflection'
require 'active_record/associations'
require 'active_record/association_preload'
require 'active_record/aggregations'
require 'active_record/transactions'
require 'active_record/timestamp'
require 'active_record/locking/optimistic'
require 'active_record/locking/pessimistic'
require 'active_record/migration'
require 'active_record/schema'
require 'active_record/calculations'
require 'active_record/serialization'
require 'active_record/attribute_methods'
require 'active_record/dirty'
require 'active_record/dynamic_finder_match'
module ActiveRecord
# TODO: Review explicit loads to see if they will automatically be handled by the initilizer.
def self.load_all!
[Base, DynamicFinderMatch, ConnectionAdapters::AbstractAdapter]
end

ActiveRecord::Base.class_eval do
extend ActiveRecord::QueryCache
include ActiveRecord::Validations
include ActiveRecord::Locking::Optimistic
include ActiveRecord::Locking::Pessimistic
include ActiveRecord::AttributeMethods
include ActiveRecord::Dirty
include ActiveRecord::Callbacks
include ActiveRecord::Observing
include ActiveRecord::Timestamp
include ActiveRecord::Associations
include ActiveRecord::NamedScope
include ActiveRecord::AssociationPreload
include ActiveRecord::Aggregations
include ActiveRecord::Transactions
include ActiveRecord::Reflection
include ActiveRecord::Calculations
include ActiveRecord::Serialization
end
autoload :Aggregations, 'active_record/aggregations'
autoload :AssociationPreload, 'active_record/association_preload'
autoload :Associations, 'active_record/associations'
autoload :AttributeMethods, 'active_record/attribute_methods'
autoload :Base, 'active_record/base'
autoload :Calculations, 'active_record/calculations'
autoload :Callbacks, 'active_record/callbacks'
autoload :Dirty, 'active_record/dirty'
autoload :DynamicFinderMatch, 'active_record/dynamic_finder_match'
autoload :Migration, 'active_record/migration'
autoload :NamedScope, 'active_record/named_scope'
autoload :Observing, 'active_record/observer'
autoload :QueryCache, 'active_record/query_cache'
autoload :Reflection, 'active_record/reflection'
autoload :Schema, 'active_record/schema'
autoload :SchemaDumper, 'active_record/schema_dumper'
autoload :Serialization, 'active_record/serialization'
autoload :TestCase, 'active_record/test_case'
autoload :Timestamp, 'active_record/timestamp'
autoload :Transactions, 'active_record/transactions'
autoload :Validations, 'active_record/validations'

require 'active_record/connection_adapters/abstract_adapter'
module Locking
autoload :Optimistic, 'active_record/locking/optimistic'
autoload :Pessimistic, 'active_record/locking/pessimistic'
end

require 'active_record/schema_dumper'
module ConnectionAdapters
autoload :AbstractAdapter, 'active_record/connection_adapters/abstract_adapter'
end
end

require 'active_record/i18n_interpolation_deprecation'
I18n.load_path << File.dirname(__FILE__) + '/active_record/locale/en.yml'

ActiveRecord.load_all!
22 changes: 12 additions & 10 deletions activerecord/lib/active_record/associations.rb
@@ -1,13 +1,3 @@
require 'active_record/associations/association_proxy'
require 'active_record/associations/association_collection'
require 'active_record/associations/belongs_to_association'
require 'active_record/associations/belongs_to_polymorphic_association'
require 'active_record/associations/has_one_association'
require 'active_record/associations/has_many_association'
require 'active_record/associations/has_many_through_association'
require 'active_record/associations/has_and_belongs_to_many_association'
require 'active_record/associations/has_one_through_association'

module ActiveRecord
class HasManyThroughAssociationNotFoundError < ActiveRecordError #:nodoc:
def initialize(owner_class_name, reflection)
Expand Down Expand Up @@ -75,6 +65,18 @@ def initialize(reflection)

# See ActiveRecord::Associations::ClassMethods for documentation.
module Associations # :nodoc:
# These classes will be loaded when associatoins are created.
# So there is no need to eager load them.
autoload :AssociationCollection, 'active_record/associations/association_collection'
autoload :AssociationProxy, 'active_record/associations/association_proxy'
autoload :BelongsToAssociation, 'active_record/associations/belongs_to_association'
autoload :BelongsToPolymorphicAssociation, 'active_record/associations/belongs_to_polymorphic_association'
autoload :HasAndBelongsToManyAssociation, 'active_record/associations/has_and_belongs_to_many_association'
autoload :HasManyAssociation, 'active_record/associations/has_many_association'
autoload :HasManyThroughAssociation, 'active_record/associations/has_many_through_association'
autoload :HasOneAssociation, 'active_record/associations/has_one_association'
autoload :HasOneThroughAssociation, 'active_record/associations/has_one_through_association'

def self.included(base)
base.extend(ClassMethods)
end
Expand Down
11 changes: 11 additions & 0 deletions activerecord/lib/active_record/base.rb
Expand Up @@ -2978,4 +2978,15 @@ def clone_attribute_value(reader_method, attribute_name)
value
end
end

Base.class_eval do
extend QueryCache
include Validations
include Locking::Optimistic, Locking::Pessimistic
include AttributeMethods
include Dirty
include Callbacks, Observing, Timestamp
include Associations, AssociationPreload, NamedScope
include Aggregations, Transactions, Reflection, Calculations, Serialization
end
end
Expand Up @@ -3,6 +3,7 @@
require 'bigdecimal'
require 'bigdecimal/util'

# TODO: Autoload these files
require 'active_record/connection_adapters/abstract/schema_definitions'
require 'active_record/connection_adapters/abstract/schema_statements'
require 'active_record/connection_adapters/abstract/database_statements'
Expand Down
2 changes: 1 addition & 1 deletion activerecord/lib/active_record/serialization.rb
Expand Up @@ -95,4 +95,4 @@ def to_s(&block)
end

require 'active_record/serializers/xml_serializer'
require 'active_record/serializers/json_serializer'
require 'active_record/serializers/json_serializer'
1 change: 0 additions & 1 deletion activerecord/test/cases/ar_schema_test.rb
@@ -1,5 +1,4 @@
require "cases/helper"
require 'active_record/schema'

if ActiveRecord::Base.connection.supports_migrations?

Expand Down
1 change: 0 additions & 1 deletion activerecord/test/cases/schema_dumper_test.rb
@@ -1,5 +1,4 @@
require "cases/helper"
require 'active_record/schema_dumper'
require 'stringio'


Expand Down

0 comments on commit 7254d23

Please sign in to comment.