From 2c4dc76c6a4840865c83177ceeb217b859e20df8 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 6 Dec 2011 20:54:06 +0000 Subject: new_file: backwards compatibility for old args --- lib/mogilefs/backend.rb | 1 + lib/mogilefs/mogilefs.rb | 3 ++- test/test_mogilefs_integration.rb | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/mogilefs/backend.rb b/lib/mogilefs/backend.rb index 7818f6e..0319525 100644 --- a/lib/mogilefs/backend.rb +++ b/lib/mogilefs/backend.rb @@ -152,6 +152,7 @@ class MogileFS::Backend add_error 'unknown_key' add_error 'unknown_state' add_error 'unreg_domain' + add_error 'unreg_class' def shutdown_unlocked(do_raise = false) # :nodoc: @pending = [] diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index 6059f5f..22dd39c 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -129,7 +129,7 @@ class MogileFS::MogileFS < MogileFS::Client # Consider using store_file instead of this method for large files. # This requires a block passed to it and operates like File.open. # This atomically replaces existing data stored as +key+ when - def new_file(key, args = nil, bytes = 0) # :yields: file + def new_file(key, args = nil, bytes = nil) # :yields: file raise MogileFS::ReadOnlyError if readonly? opts = { :key => key, :multi_dest => 1 } case args @@ -157,6 +157,7 @@ class MogileFS::MogileFS < MogileFS::Client opts.merge!(args) if Hash === args opts[:backend] = @backend opts[:fid] = res['fid'] + opts[:content_length] ||= bytes if bytes case (dests[0][1] rescue nil) when %r{\Ahttp://} diff --git a/test/test_mogilefs_integration.rb b/test/test_mogilefs_integration.rb index 8b5e3c1..57ea675 100644 --- a/test/test_mogilefs_integration.rb +++ b/test/test_mogilefs_integration.rb @@ -210,6 +210,23 @@ class TestMogileFSIntegration < TestMogIntegration @client.new_file("a", :content_md5 => :trailer) { |f| f.big_io = r } end assert_equal "HIHI", @client.get_file_data("a") + + # legacy, in case anybody used it + rv = @client.new_file("a",{:class => "default"}, 6) + assert_equal 2, rv.write("HI") + assert_raises(MogileFS::SizeMismatchError) { rv.close } + assert_equal "HIHI", @client.get_file_data("a") + + rv = @client.new_file("a",{:class => "default"}, 2) + assert_equal 2, rv.write("HI") + assert_nil rv.close + assert_equal "HI", @client.get_file_data("a") + assert_raises(MogileFS::Backend::UnregClassError) { + @client.new_file("a", "non-existent", 2) + } + assert_raises(MogileFS::Backend::UnregClassError) { + @client.new_file("a", :class => "non-existent") + } ensure r.close if r end -- cgit v1.2.3-24-ge0c7