Class: DataMapper::Database
- Inherits:
-
Object
- Object
- DataMapper::Database
show all
- Defined in:
- lib/data_mapper/database.rb
Defined Under Namespace
Classes: ConditionEscapeError
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name) ⇒ Database
Returns a new instance of Database.
52
53
54
|
# File 'lib/data_mapper/database.rb', line 52
def initialize(name)
@name = name
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args) ⇒ Object
Shortcut to adapter.class::Queries::FooStatement.new
57
58
59
60
|
# File 'lib/data_mapper/database.rb', line 57
def method_missing(sym, *args)
return super if sym.to_s !~ /_statement$/
@adapter.class::Queries.const_get(Inflector.classify(sym.to_s)).new(self, *args)
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
76
77
78
|
# File 'lib/data_mapper/database.rb', line 76
def name
@name
end
|
Class Method Details
.[](name) ⇒ Object
38
39
40
|
# File 'lib/data_mapper/database.rb', line 38
def self.[](name)
@databases[name]
end
|
.context ⇒ Object
42
43
44
|
# File 'lib/data_mapper/database.rb', line 42
def self.context
@context
end
|
.setup(name = :default, &initializer) ⇒ Object
46
47
48
49
50
|
# File 'lib/data_mapper/database.rb', line 46
def self.setup(name = :default, &initializer)
current = self.new(name)
current.instance_eval(&initializer)
@databases[name] = current
end
|
Instance Method Details
#[](klass_or_table_name) ⇒ Object
66
67
68
|
# File 'lib/data_mapper/database.rb', line 66
def [](klass_or_table_name)
schema[klass_or_table_name]
end
|
#adapter(value = nil) ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/data_mapper/database.rb', line 78
def adapter(value = nil)
return @adapter if value.nil?
raise ArgumentError.new('The adapter is readonly after being set') unless @adapter.nil?
require "data_mapper/adapters/#{Inflector.underscore(value)}_adapter"
adapter_class = Adapters::const_get(Inflector.classify(value) + "Adapter")
(class << self; self end).send(:include, adapter_class::Quoting)
(class << self; self end).send(:include, adapter_class::Coersion)
@adapter = adapter_class.new(self)
end
|
#connection ⇒ Object
119
120
121
122
123
|
# File 'lib/data_mapper/database.rb', line 119
def connection
@adapter.connection do |db|
results = yield(db)
end
end
|
#database(value = nil) ⇒ Object
93
|
# File 'lib/data_mapper/database.rb', line 93
def database(value = nil); value.nil? ? @database : @database = value end
|
#execute(sql) ⇒ Object
129
130
131
|
# File 'lib/data_mapper/database.rb', line 129
def execute(sql)
connection { |db| db.execute(sql) }
end
|
#host(value = nil) ⇒ Object
92
|
# File 'lib/data_mapper/database.rb', line 92
def host(value = nil); value.nil? ? (@host || 'localhost') : @host = value end
|
#log(value = nil) ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/data_mapper/database.rb', line 97
def log(value = nil)
@log = value unless value.nil?
if @log.nil?
@log = log_stream.nil? ? Logger.new(nil) : Logger.new(log_stream, File::WRONLY | File::APPEND | File::CREAT)
@log.level = log_level || Logger::WARN
at_exit { @log.close }
end
@log
end
|
#log_level(value = nil) ⇒ Object
109
110
111
112
|
# File 'lib/data_mapper/database.rb', line 109
def log_level(value = nil)
return @log_level if value.nil?
@log_level = value
end
|
#log_stream(value = nil) ⇒ Object
114
115
116
117
|
# File 'lib/data_mapper/database.rb', line 114
def log_stream(value = nil)
return @log_stream if value.nil?
@log_stream = value
end
|
#password(value = nil) ⇒ Object
95
|
# File 'lib/data_mapper/database.rb', line 95
def password(value = nil); value.nil? ? (@password || '') : @password = value end
|
#query(sql) ⇒ Object
125
126
127
|
# File 'lib/data_mapper/database.rb', line 125
def query(sql)
connection { |db| db.query(sql) }
end
|
#schema ⇒ Object
70
71
72
|
# File 'lib/data_mapper/database.rb', line 70
def schema
@schema ||= Mappings::Schema.new(self)
end
|
#syntax(token) ⇒ Object
62
63
64
|
# File 'lib/data_mapper/database.rb', line 62
def syntax(token)
@adapter.class::SYNTAX[token]
end
|
#username(value = nil) ⇒ Object
94
|
# File 'lib/data_mapper/database.rb', line 94
def username(value = nil); value.nil? ? @username : @username = value end
|