aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record.rb
blob: d5b6d40514e3ae5cdbc6fe8b8d4381b292db73e3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#--
# Copyright (c) 2004-2009 David Heinemeier Hansson
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#++


activesupport_path = File.expand_path('../../../activesupport/lib', __FILE__)
$:.unshift(activesupport_path) if File.directory?(activesupport_path) && !$:.include?(activesupport_path)

activemodel_path = File.expand_path('../../../activemodel/lib', __FILE__)
$:.unshift(activemodel_path) if File.directory?(activemodel_path) && !$:.include?(activemodel_path)

require 'active_support'
require 'active_model'
require 'arel'

module ActiveRecord
  extend ActiveSupport::Autoload

  eager_autoload do
    autoload :VERSION

    autoload :ActiveRecordError, 'active_record/base'
    autoload :ConnectionNotEstablished, 'active_record/base'

    autoload :Aggregations
    autoload :AssociationPreload
    autoload :Associations
    autoload :AttributeMethods
    autoload :Attributes
    autoload :AutosaveAssociation

    autoload :Relation

    autoload_under 'relation' do
      autoload :QueryMethods
      autoload :FinderMethods
      autoload :CalculationMethods
      autoload :PredicateBuilder
      autoload :SpawnMethods
    end

    autoload :Base
    autoload :Batches
    autoload :Calculations
    autoload :Callbacks
    autoload :DynamicFinderMatch
    autoload :DynamicScopeMatch
    autoload :Migration
    autoload :Migrator, 'active_record/migration'
    autoload :NamedScope
    autoload :NestedAttributes
    autoload :Observer
    autoload :QueryCache
    autoload :Reflection
    autoload :Schema
    autoload :SchemaDumper
    autoload :Serialization
    autoload :SessionStore
    autoload :StateMachine
    autoload :Timestamp
    autoload :Transactions
    autoload :Types
    autoload :Validations
  end

  module AttributeMethods
    extend ActiveSupport::Autoload

    eager_autoload do
      autoload :BeforeTypeCast
      autoload :Dirty
      autoload :PrimaryKey
      autoload :Query
      autoload :Read
      autoload :TimeZoneConversion
      autoload :Write
    end
  end

  module Attributes
    extend ActiveSupport::Autoload

    eager_autoload do
      autoload :Aliasing
      autoload :Store
      autoload :Typecasting
    end
  end

  module Type
    extend ActiveSupport::Autoload

    eager_autoload do
      autoload :Number, 'active_record/types/number'
      autoload :Object, 'active_record/types/object'
      autoload :Serialize, 'active_record/types/serialize'
      autoload :TimeWithZone, 'active_record/types/time_with_zone'
      autoload :Unknown, 'active_record/types/unknown'
    end
  end

  module Locking
    extend ActiveSupport::Autoload

    eager_autoload do
      autoload :Optimistic
      autoload :Pessimistic
    end
  end

  module ConnectionAdapters
    extend ActiveSupport::Autoload

    eager_autoload do
      autoload :AbstractAdapter
    end
  end

  autoload :TestCase
  autoload :TestFixtures, 'active_record/fixtures'
end

Arel::Table.engine = Arel::Sql::Engine.new(ActiveRecord::Base)
I18n.load_path << File.dirname(__FILE__) + '/active_record/locale/en.yml'