halostatue / minitar

Minimal pure-ruby support for POSIX tar(1) archives.
Other
38 stars 27 forks source link

Error in `minitar.rb:78:in `open': uninitialized constant #<Class:Minitar>::Input (NameError)` #58

Closed aramprice closed 2 months ago

aramprice commented 2 months ago

Reproduction on ruby 3.2.5 - freshly installed via ruby-install:

irb(main):001:0> require 'minitar'
=> true
irb(main):002:0> puts Minitar::VERSION
1.0.0
=> nil
irb(main):003:0> RUBY_VERSION
=> "3.2.5"
irb(main):004:0> Minitar.open('foo')
~/.gem/ruby/3.2.5/gems/minitar-1.0.0/lib/minitar.rb:78:in `open': uninitialized constant #<Class:Minitar>::Input (NameError)

      Input.open(dest, &)
      ^^^^^
    from (irb):2:in `<main>'
    from ~/.rubies/ruby-3.2.5/lib/ruby/gems/3.2.0/gems/irb-1.6.2/exe/irb:11:in `<top (required)>'
    from ~/.rubies/ruby-3.2.5/bin/irb:25:in `load'
    from ~/.rubies/ruby-3.2.5/bin/irb:25:in `<main>'
irb(main):005:0>
aramprice commented 2 months ago

I think this is the needed fix:

diff --git a/lib/minitar.rb b/lib/minitar.rb
index 7ab1a57..910f4f4 100644
--- a/lib/minitar.rb
+++ b/lib/minitar.rb
@@ -75,9 +75,9 @@ class << Minitar
   def open(dest, mode = "r", &)
     case mode
     when "r"
-      Input.open(dest, &)
+      Minitar::Input.open(dest, &)
     when "w"
-      Output.open(dest, &block)
+      Minitar::Output.open(dest, &block)
     else
       raise "Unknown open mode for Minitar.open."
     end
diff --git a/test/test_minitar.rb b/test/test_minitar.rb
index 313d675..b6b6fce 100755
--- a/test/test_minitar.rb
+++ b/test/test_minitar.rb
@@ -31,7 +31,7 @@ class TestMinitar < Minitest::Test

     count = 0
     reader = StringIO.new(writer.string)
-    Minitar::Input.open(reader) do |stream|
+    Minitar.open(reader) do |stream|
       stream.each.with_index do |entry, i|
         assert_kind_of Minitar::Reader::EntryStream, entry
halostatue commented 2 months ago

Thank you for the bug report and proposed fix.

aramprice commented 2 months ago

Thank you for the quick fix!