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
|
# File 'lib/rails_lens/providers/schema_provider.rb', line 14
def process(model_class, connection = nil)
if connection.nil?
raise ArgumentError, 'SchemaProvider requires a connection to be passed to prevent connection pool exhaustion'
end
conn = connection
if model_class.abstract_class?
adapter_name = conn.adapter_name
lines = []
begin
connection_name = conn.pool.db_config.name
lines << "connection = \"#{connection_name}\""
rescue StandardError
lines << 'connection = "unknown"'
end
lines << "database_dialect = \"#{adapter_name}\""
begin
db_version = conn.database_version
lines << "database_version = \"#{db_version}\""
rescue StandardError
lines << 'database_version = "unknown"'
end
begin
db_name = conn.current_database
lines << "database_name = \"#{db_name}\"" if db_name
rescue StandardError
end
lines << ''
lines << '# This is an abstract class that establishes a database connection'
lines << '# but does not have an associated table.'
lines.join("\n")
else
adapter = Connection.adapter_for(model_class, conn)
adapter.generate_annotation(model_class)
end
end
|