diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-12-08 20:49:57 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-12-08 20:49:57 +0000 |
commit | e87d69883d050dfb24525a89bcd340250dad6991 (patch) | |
tree | 3a7d18494f34f6fa602722b62004a5543755f874 | |
parent | 5c824e04d5de04b4d6c8fb58dfc60e4d3f6cd7c7 (diff) | |
download | mogilefs-client-e87d69883d050dfb24525a89bcd340250dad6991.tar.gz |
This way, folks can rescue for exceptions we haven't defined, yet.
-rw-r--r-- | lib/mogilefs/backend.rb | 8 | ||||
-rw-r--r-- | test/test_backend.rb | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/mogilefs/backend.rb b/lib/mogilefs/backend.rb index 0319525..b48764c 100644 --- a/lib/mogilefs/backend.rb +++ b/lib/mogilefs/backend.rb @@ -42,6 +42,14 @@ class MogileFS::Backend BACKEND_ERRORS[err_snake] = const_get(err_camel) end + def self.const_missing(name) + if /Error\z/ =~ name.to_s + const_set(name, Class.new(MogileFS::Error)) + else + super name + end + end + ## # The last error diff --git a/test/test_backend.rb b/test/test_backend.rb index 707c312..cc8d3a7 100644 --- a/test/test_backend.rb +++ b/test/test_backend.rb @@ -58,6 +58,14 @@ class TestBackend < Test::Unit::TestCase assert @backend.error('peb_kac') assert_equal MogileFS::Error, @backend.error('PebKacError').superclass assert MogileFS::Backend.const_defined?('PebKacError') + + assert_nothing_raised do + MogileFS::Backend::OMFGWTFBBQError + end + assert_equal MogileFS::Error, MogileFS::Backend::OMFGWTFBBQError.superclass + assert_raises(NameError) do + MogileFS::Backend::FailFailFail + end end def test_size_verify_error_defined |