Top Level Namespace
Instance Method Summary collapse
-
#assure(expression, message = nil) ⇒ Object
Raises internal error when expression evaluates to nil or false Use this to check various preconditions, for example def do_smth(x) assure(x.is_a? String) end You can provide optional message to be printed in the exception output.
- #get_caller_location_for_assure(options = {:depth => 2}) ⇒ Object
-
#internal_error(message = 'internal error') ⇒ Object
Use this to raise internal error with a given message.
Instance Method Details
#assure(expression, message = nil) ⇒ Object
Raises internal error when expression evaluates to nil or false Use this to check various preconditions, for example def do_smth(x)
assure(x.is_a? String)
end You can provide optional message to be printed in the exception output.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/assure.rb', line 15 def assure(expression, = nil) return if expression file, method, line = get_caller_location_for_assure #Try to find expression in assert expression = File.readlines(file)[line.to_i-1]. gsub(/^.*assure\s*\(\s*/, '').gsub(/\s*\)\s*$/, '') #cleanup path - remove rails root and "./" if defined? Rails file = file.gsub(Rails.root.to_s+'/', '') else file = file.gsub(Dir.pwd, '') end file = file.gsub(/^\.\//, '') raise internal_error("#{file}:#{line}: #{method}: Assertion \"#{expression}\" failed#{ ? "\n#{}" : ""}") end |
#get_caller_location_for_assure(options = {:depth => 2}) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/assure.rb', line 33 def get_caller_location_for_assure( = {:depth => 2}) caller_method = caller([:depth])[0] #Sample output is: # test/unit/assure_test.rb:9:in `test_assure # test.rb:3 caller_method =~ /([^:]+):([0-9]+)(:in `(.+)')*/ file = $1 line = $2 method = $4 [file, method, line] end |
#internal_error(message = 'internal error') ⇒ Object
Use this to raise internal error with a given message. This works for all modes - production, development, etc.
5 6 7 |
# File 'lib/assure.rb', line 5 def internal_error( = 'internal error') raise end |