about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-12-09 16:23:48 -0800
committerEric Wong <normalperson@yhbt.net>2011-12-10 00:24:03 +0000
commit7f153071e40b1242ad0aa46c81ec0e927b9fc890 (patch)
tree91d2063af5f2f261d003273c4b5885912c9c14e7
parent5326214033b4f26ec426a0313c164f5de0225207 (diff)
downloadmogilefs-client-7f153071e40b1242ad0aa46c81ec0e927b9fc890.tar.gz
This should make documentation easier
-rw-r--r--lib/mogilefs.rb1
-rw-r--r--lib/mogilefs/http_file.rb4
-rw-r--r--lib/mogilefs/mogilefs.rb8
-rw-r--r--lib/mogilefs/new_file.rb (renamed from lib/mogilefs/put.rb)19
-rw-r--r--lib/mogilefs/new_file/common.rb (renamed from lib/mogilefs/new_file_common.rb)2
-rw-r--r--lib/mogilefs/new_file/content_range.rb (renamed from lib/mogilefs/put/content_range.rb)9
-rw-r--r--lib/mogilefs/new_file/stream.rb (renamed from lib/mogilefs/put/stream.rb)9
-rw-r--r--lib/mogilefs/new_file/tempfile.rb (renamed from lib/mogilefs/put/tempfile.rb)2
-rw-r--r--lib/mogilefs/new_file/writer.rb (renamed from lib/mogilefs/new_file_writer.rb)2
-rw-r--r--test/test_mogstored_rack.rb4
10 files changed, 28 insertions, 32 deletions
diff --git a/lib/mogilefs.rb b/lib/mogilefs.rb
index ad0d6fb..ba6ca95 100644
--- a/lib/mogilefs.rb
+++ b/lib/mogilefs.rb
@@ -76,6 +76,5 @@ require 'mogilefs/http_file'
 require 'mogilefs/http_reader'
 require 'mogilefs/client'
 require 'mogilefs/bigfile'
-require 'mogilefs/put'
 require 'mogilefs/mogilefs'
 require 'mogilefs/version' # generated by ./GIT-VERSION-GEN
diff --git a/lib/mogilefs/http_file.rb b/lib/mogilefs/http_file.rb
index b2d5620..8784f68 100644
--- a/lib/mogilefs/http_file.rb
+++ b/lib/mogilefs/http_file.rb
@@ -1,7 +1,7 @@
 # -*- encoding: binary -*-
 # here are internal implementation details, do not use them in your code
 require 'stringio'
-require 'mogilefs/new_file_common'
+require 'mogilefs/new_file'
 
 ##
 # HTTPFile wraps up the new file operations for storing files onto an HTTP
@@ -11,7 +11,7 @@ require 'mogilefs/new_file_common'
 # create a new file using MogileFS::MogileFS.new_file.
 #
 class MogileFS::HTTPFile < StringIO
-  include MogileFS::NewFileCommon
+  include MogileFS::NewFile::Common
 
   ##
   # The big_io name in case we have file > 256M
diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb
index c93d1a3..b192605 100644
--- a/lib/mogilefs/mogilefs.rb
+++ b/lib/mogilefs/mogilefs.rb
@@ -129,6 +129,12 @@ 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
+  #
+  # +args+ may contain the following options:
+  # * :content_length => Integer
+  # * :largefile => [ :stream, :content_range, :tempfile ]
+  #    (see # MogileFS::NewFile)
+  # * :content_md5 => String, Proc, or :trailer
   def new_file(key, args = nil, bytes = nil) # :yields: file
     raise MogileFS::ReadOnlyError if readonly?
     opts = { :key => key, :multi_dest => 1 }
@@ -161,7 +167,7 @@ class MogileFS::MogileFS < MogileFS::Client
 
     case (dests[0][1] rescue nil)
     when %r{\Ahttp://}
-      http_file = MogileFS::Put[opts[:largefile]].new(dests, opts)
+      http_file = MogileFS::NewFile[opts[:largefile]].new(dests, opts)
       if block_given?
         yield http_file
         return http_file.commit # calls create_close
diff --git a/lib/mogilefs/put.rb b/lib/mogilefs/new_file.rb
index 3f13df2..e99a023 100644
--- a/lib/mogilefs/put.rb
+++ b/lib/mogilefs/new_file.rb
@@ -1,7 +1,9 @@
 # -*- encoding: binary -*-
-module MogileFS::Put
+module MogileFS::NewFile
 
-  def self.[](largefile)
+  # avoiding autoload for new code since it's going away in Ruby...
+  def self.[](largefile) # :nodoc:
+    require "mogilefs/new_file/#{largefile}" if Symbol === largefile
     case largefile
     when nil, false
       MogileFS::HTTPFile
@@ -15,15 +17,6 @@ module MogileFS::Put
       raise ArgumentError, "largefile: #{largefile.inspect} not understood"
     end
   end
-
-  def self.const_missing(name)
-    case name
-    when :Stream, :ContentRange, :Tempfile
-      file = name.to_s.gsub(/([a-z])([A-Z])/, '\1_\2').downcase
-      require "mogilefs/put/#{file}"
-      const_get(name)
-    else
-      super(name)
-    end
-  end
 end
+
+require 'mogilefs/new_file/common'
diff --git a/lib/mogilefs/new_file_common.rb b/lib/mogilefs/new_file/common.rb
index 9db6aec..38d0fd3 100644
--- a/lib/mogilefs/new_file_common.rb
+++ b/lib/mogilefs/new_file/common.rb
@@ -5,7 +5,7 @@ require 'uri'
 require 'digest/md5'
 require 'mogilefs/chunker'
 
-module MogileFS::NewFileCommon
+module MogileFS::NewFile::Common
   # :stopdoc:
   class RetryableError < MogileFS::Error; end
   class EmptyResponseError < RetryableError; end
diff --git a/lib/mogilefs/put/content_range.rb b/lib/mogilefs/new_file/content_range.rb
index e44a8e2..5893980 100644
--- a/lib/mogilefs/put/content_range.rb
+++ b/lib/mogilefs/new_file/content_range.rb
@@ -7,13 +7,12 @@ rescue LoadError
         'net-http-persistent required for :largefile => :content_range', []
 end
 
-require 'mogilefs/new_file_common'
-require 'mogilefs/new_file_writer'
+require 'mogilefs/new_file/writer'
 
 # an IO-like object
-class MogileFS::Put::ContentRange
-  include MogileFS::NewFileWriter
-  include MogileFS::NewFileCommon
+class MogileFS::NewFile::ContentRange
+  include MogileFS::NewFile::Writer
+  include MogileFS::NewFile::Common
 
   NHP = Net::HTTP::Persistent.new('mogilefs')
   attr_reader :md5
diff --git a/lib/mogilefs/put/stream.rb b/lib/mogilefs/new_file/stream.rb
index 590a24f..b2253f0 100644
--- a/lib/mogilefs/put/stream.rb
+++ b/lib/mogilefs/new_file/stream.rb
@@ -1,15 +1,14 @@
 # -*- encoding: binary -*-
 # here are internal implementation details, do not use them in your code
 
-require 'mogilefs/new_file_common'
-require 'mogilefs/new_file_writer'
+require 'mogilefs/new_file/writer'
 
-class MogileFS::Put::Stream
+class MogileFS::NewFile::Stream
   attr_reader :to_io
   attr_reader :md5
 
-  include MogileFS::NewFileWriter
-  include MogileFS::NewFileCommon
+  include MogileFS::NewFile::Writer
+  include MogileFS::NewFile::Common
 
   def initialize(dests, opts)
     @opts = opts
diff --git a/lib/mogilefs/put/tempfile.rb b/lib/mogilefs/new_file/tempfile.rb
index 8082f95..ecec02e 100644
--- a/lib/mogilefs/put/tempfile.rb
+++ b/lib/mogilefs/new_file/tempfile.rb
@@ -3,7 +3,7 @@
 require 'tempfile'
 require 'mogilefs/http_file'
 
-class MogileFS::Put::Tempfile < Tempfile
+class MogileFS::NewFile::Tempfile < Tempfile
   def initialize(*args)
     @mogilefs_httpfile_args = args
     super("mogilefs-client")
diff --git a/lib/mogilefs/new_file_writer.rb b/lib/mogilefs/new_file/writer.rb
index 9b90df4..994545b 100644
--- a/lib/mogilefs/new_file_writer.rb
+++ b/lib/mogilefs/new_file/writer.rb
@@ -1,7 +1,7 @@
 # -*- encoding: binary -*-
 # here are internal implementation details, do not use them in your code
 #
-module MogileFS::NewFileWriter
+module MogileFS::NewFile::Writer
   def puts(*args)
     args.each do |obj|
       write(obj)
diff --git a/test/test_mogstored_rack.rb b/test/test_mogstored_rack.rb
index ea45e46..de27c53 100644
--- a/test/test_mogstored_rack.rb
+++ b/test/test_mogstored_rack.rb
@@ -38,14 +38,14 @@ class TestMogstoredRack < Test::Unit::TestCase
     add_host_device_domain
     client = MogileFS::MogileFS.new :hosts => @hosts, :domain => @domain
     client.new_file("chunky", :largefile => :stream) do |io|
-      assert_instance_of MogileFS::Put::Stream, io
+      assert_instance_of MogileFS::NewFile::Stream, io
       assert_equal(5, io.write("HELLO"))
       assert_nil io.md5
     end
     assert_equal "HELLO", client.get_file_data("chunky")
 
     io = client.new_file("puts", :largefile => :stream)
-    assert_instance_of MogileFS::Put::Stream, io
+    assert_instance_of MogileFS::NewFile::Stream, io
     assert_equal io, IO.select(nil, [io])[1][0], "IO.select-able"
 
     assert_nil(io.puts("PUTS!"))