Skip to content

Commit 2ff76df

Browse files
authored
Forward original exceptions when re-raised (#1150)
1 parent bb976ca commit 2ff76df

5 files changed

Lines changed: 15 additions & 14 deletions

File tree

src/avram/connection.cr

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ class Avram::Connection
2121

2222
def connect_listen(*channels : String, &block : PQ::Notification ->) : Nil
2323
PG.connect_listen(credentials.url, *channels, &block)
24-
rescue DB::ConnectionRefused
25-
raise ConnectionError.new(credentials.uri, database_class: @database_class)
24+
rescue e : DB::ConnectionRefused
25+
raise ConnectionError.new(credentials.uri, database_class: @database_class, cause: e)
2626
end
2727

2828
def try_connection! : DB::Database
2929
DB.open(credentials.url)
30-
rescue DB::ConnectionRefused
31-
raise ConnectionError.new(credentials.uri, database_class: @database_class)
30+
rescue e : DB::ConnectionRefused
31+
raise ConnectionError.new(credentials.uri, database_class: @database_class, cause: e)
3232
end
3333
end

src/avram/errors.cr

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ module Avram
8888
getter connection_details : URI
8989
getter database_class : Avram::Database.class
9090

91-
def initialize(@connection_details : URI, @database_class : Avram::Database.class)
91+
def initialize(@connection_details : URI, @database_class : Avram::Database.class, cause = nil)
9292
error = String.build do |message|
9393
message << database_class.name << ": Failed to connect to database '"
9494
message << connection_details.path.try(&.[1..-1]) << "' with username '"
@@ -108,7 +108,7 @@ module Avram
108108
end
109109
end
110110

111-
super error
111+
super error, cause
112112
end
113113
end
114114

@@ -139,8 +139,8 @@ module Avram
139139
end
140140

141141
class PGNotRunningError < AvramError
142-
def initialize(original_message : String)
143-
super <<-ERROR
142+
def initialize(original_message : String, cause = nil)
143+
super <<-ERROR, cause
144144
It looks like Postgres is not running.
145145
146146
Message from Postgres:

src/avram/migrator/runner.cr

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class Avram::Migrator::Runner
8787
rescue e : DB::ConnectionRefused
8888
message = e.message.to_s
8989
if message.blank?
90-
raise ConnectionError.new(URI.parse(credentials.url_without_query_params), Avram.settings.database_to_migrate)
90+
raise ConnectionError.new(URI.parse(credentials.url_without_query_params), Avram.settings.database_to_migrate, cause: e)
9191
else
9292
raise e
9393
end
@@ -98,7 +98,7 @@ class Avram::Migrator::Runner
9898
puts "Already created #{self.db_name.colorize(:green)}"
9999
end
100100
elsif message.includes?("Cannot establish connection")
101-
raise PGNotRunningError.new(message)
101+
raise PGNotRunningError.new(message, cause: e)
102102
else
103103
raise e
104104
end
@@ -264,6 +264,7 @@ class Avram::Migrator::Runner
264264
yield
265265
end
266266
rescue e : DB::ConnectionRefused
267-
raise "Unable to connect to the database. Please check your configuration.".colorize(:red).to_s
267+
message = "Unable to connect to the database. Please check your configuration.".colorize(:red).to_s
268+
raise Exception.new(message, cause: e)
268269
end
269270
end

src/avram/queryable.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ module Avram::Queryable(T)
168168
direction = Avram::OrderBy::Direction.parse(direction.to_s)
169169
order_by(Avram::OrderBy.new(column, direction, null_sorting))
170170
rescue e : ArgumentError
171-
raise "#{e.message}. Accepted values are: :asc, :desc"
171+
raise ArgumentError.new("#{e.message}. Accepted values are: :asc, :desc")
172172
end
173173

174174
def order_by(order : Avram::OrderByClause) : self

src/avram/tasks/db/verify_connection.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class Db::VerifyConnection < BaseTask
2323
DB.open(Avram.settings.database_to_migrate.settings.credentials.url) do |_db|
2424
output.puts "✔ Connection verified" unless quiet?
2525
end
26-
rescue Avram::ConnectionError | DB::ConnectionRefused
27-
raise <<-ERROR
26+
rescue e : Avram::ConnectionError | DB::ConnectionRefused
27+
raise Exception.new <<-ERROR, cause: e
2828
Unable to connect to Postgres for database '#{Avram.settings.database_to_migrate}'.
2929
3030
This is what we tried to connect to:

0 commit comments

Comments
 (0)