niftp 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4ecdd6f91f41ec89d5f2f51e87d06aa829999a0b
4
+ data.tar.gz: def6a841b38631985ea3e1dd5203a034f55f822f
5
+ SHA512:
6
+ metadata.gz: 8661c3de51ddb34af10bb16982ef174c6d34a5d9a75f5717e4f47ab308733de1b3acef4359af4287c36043c64ee64c1b84e81f7be0d3aa2cb36b72f33431705a
7
+ data.tar.gz: aa51e846a3efae363e2e458193609d4701a6c192ef1b6351a6ed2f44beb9f54116a99000eaccdd75ac7b6034351c5c87cd5c8c428b0c160d2f8b76a149b41885
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.3"
4
+ - "2.0.0"
5
+ - "2.1.0"
6
+ - "2.2.0"
7
+ - jruby-19mode # JRuby in 1.9 mode
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,30 @@
1
+ Pull requests are very welcome. Please follow these guidelines (modeled after
2
+ thoughtbot's):
3
+
4
+ 1. Fork the repo.
5
+
6
+ 1. Run the tests. All changes made to the code have passing tests: `bundle && rake`
7
+
8
+ 1. Add a test for your change/fix. Only refactoring and documentation changes
9
+ require no new tests.
10
+
11
+ 1. Push to your fork and submit a pull request.
12
+
13
+ I will respond as quickly as possible and may suggest some changes,
14
+ improvements or alternatives. Some things that will increase the chance that
15
+ your pull request is accepted, taken straight from the Ruby on Rails guide:
16
+
17
+ * Use Rails idioms and helpers
18
+ * Include tests that fail without your code, and pass with it
19
+ * Update the documentation, the surrounding one or whatever is affected by
20
+ your contribution
21
+
22
+ Syntax:
23
+
24
+ * Follow the conventions you see used in the source already.
25
+ * [No trailing whitespace](http://blogobaggins.com/2009/03/31/waging-war-on-whitespace.html).
26
+ Blank lines should not have any space.
27
+ * Two spaces, no tabs.
28
+ * Prefer &&/|| over and/or.
29
+ * MyClass.my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
30
+ * a = b and not a=b.
data/Guardfile ADDED
@@ -0,0 +1,7 @@
1
+ group :ruby do
2
+ guard :minitest, all_on_start: false do
3
+ watch(%r{^test/.+_test\.rb$})
4
+ watch('test/test_helper.rb') { "test" }
5
+ watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
6
+ end
7
+ end
data/README.md CHANGED
@@ -3,6 +3,9 @@ use. It abstracts away the FTP plumbing, such as establishing and closing
3
3
  connections. Options include retrying your commands on flakey FTP servers, and
4
4
  forced timeouts. FTP Secure (FTPS) is also supported.
5
5
 
6
+ [![Code Climate](https://codeclimate.com/github/chmurph2/NiFTP.png)](https://codeclimate.com/github/chmurph2/NiFTP)
7
+ [![Build Status](https://travis-ci.org/chmurph2/NiFTP.png)](https://travis-ci.org/chmurph2/NiFTP)
8
+
6
9
  ## Usage
7
10
  # Without NiFTP:
8
11
  begin
@@ -18,6 +21,7 @@ forced timeouts. FTP Secure (FTPS) is also supported.
18
21
  # A more concrete example:
19
22
 
20
23
  # Mixin the +NiFTP+ module, which provides the +ftp+ method.
24
+ require 'niftp'
21
25
  class SomeObject
22
26
  include NiFTP
23
27
 
@@ -49,8 +53,8 @@ forced timeouts. FTP Secure (FTPS) is also supported.
49
53
  * **matching**: An exception message regex to limit when the code block is
50
54
  retried (default: /.*/). See the
51
55
  [retryable](https://github.com/nfedyashev/retryable) gem for usage details
52
- * **timeout**: The number of seconds to wait before timing out (default: 5).
53
- Use 0 to disable the timeout.
56
+ * **timeout**: The number of seconds to wait before timing out authentication
57
+ (default: 30). Use 0 to disable the authentication timeout.
54
58
  * **passive**: Set to false to prevent a connection in passive mode (default:
55
59
  true).
56
60
 
@@ -62,5 +66,4 @@ forced timeouts. FTP Secure (FTPS) is also supported.
62
66
 
63
67
  ## Testing
64
68
 
65
- Tests are written with Shoulda and Mocha. This gem is tested in Ruby 1.8.7
66
- (REE) and 1.9.2.
69
+ Tests are written using minitest-spec and Mocha.
data/Rakefile CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'bundler'
2
2
  require 'rake/testtask'
3
- require 'rake/rdoctask'
4
3
 
5
4
  desc 'Default: run unit tests.'
6
5
  task :default => :test
@@ -11,13 +10,4 @@ Rake::TestTask.new(:test) do |test|
11
10
  test.libs << 'lib' << 'test'
12
11
  test.pattern = 'test/**/*_test.rb'
13
12
  test.verbose = true
14
- end
15
-
16
- Rake::RDocTask.new do |rdoc|
17
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
18
-
19
- rdoc.rdoc_dir = 'rdoc'
20
- rdoc.title = "NiFTP #{version}"
21
- rdoc.rdoc_files.include('README*')
22
- rdoc.rdoc_files.include('lib/**/*.rb')
23
13
  end
data/lib/niftp.rb CHANGED
@@ -2,7 +2,6 @@ require "net/ftp"
2
2
  require "ftpfxp"
3
3
  require "retryable"
4
4
  require "timeout"
5
- require "active_support/core_ext"
6
5
 
7
6
  # Abstracts away File Transfer Protocol plumbing, such as establishing and
8
7
  # closing connections.
@@ -13,26 +12,57 @@ module NiFTP
13
12
  #
14
13
  # See the README for available options and examples.
15
14
  def ftp(host, options = {}, &block)
16
- options.reverse_merge!(
17
- :username => "", :password => "", :port => 21, :ftps => false,
18
- :passive => true, :timeout => 30.seconds, :tries => 2, :sleep => 1.second,
19
- :on => StandardError, :matching => /.*/)
15
+ options = default_options.merge(options)
20
16
  raise "The :tries option must be > 0." if options[:tries] < 1
21
- retryable(:tries => options[:tries], :sleep => options[:sleep],
22
- :on => options[:on], :matching => options[:matching]) do
23
- ftp = options[:ftps] ? Net::FTPFXPTLS.new : Net::FTP.new
24
- ftp.passive = options[:passive]
17
+ Retryable.retryable(retryable_options(options)) do
18
+ ftp = instantiate_ftp_per_options(options)
25
19
  begin
26
- Timeout::timeout(options[:timeout]) do
27
- ftp.connect host, options[:port]
28
- ftp.login options[:username], options[:password]
29
- end
30
- yield ftp if ftp.present? && block_given?
20
+ login_with_timeout(ftp, host, options)
21
+ yield ftp if ftp && block_given?
31
22
  ensure
32
- ftp.try(:close)
23
+ ftp.close if ftp
33
24
  end
34
25
  end
35
26
  end
27
+
28
+ private
29
+
30
+ def login_with_timeout(ftp, host, options)
31
+ Timeout::timeout(options[:timeout]) do
32
+ ftp.connect host, options[:port]
33
+ ftp.login options[:username], options[:password]
34
+ end
35
+ end
36
+
37
+ def instantiate_ftp_per_options(options)
38
+ (options[:ftps] ? Net::FTPFXPTLS.new : Net::FTP.new).tap do |ftp|
39
+ ftp.passive = options[:passive]
40
+ end
41
+ end
42
+
43
+ def default_options
44
+ {
45
+ :username => "",
46
+ :password => "",
47
+ :port => 21,
48
+ :ftps => false,
49
+ :passive => true,
50
+ :timeout => 30, # seconds
51
+ :tries => 2,
52
+ :sleep => 1, # second
53
+ :on => StandardError,
54
+ :matching => /.*/
55
+ }
56
+ end
57
+
58
+ def retryable_options(options)
59
+ {
60
+ :tries => options[:tries],
61
+ :sleep => options[:sleep],
62
+ :on => options[:on],
63
+ :matching => options[:matching]
64
+ }
65
+ end
36
66
  end
37
67
 
38
68
  # Alias for those that prefer a conventional module name.
data/lib/niftp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module NiFTP
2
- VERSION = "2.0.1"
2
+ VERSION = "2.1.0"
3
3
  end
data/niftp.gemspec CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.summary = %q{NiFTP makes Ruby's decidedly un-nifty Net::FTP library
13
13
  easier to use.}
14
14
  s.description = s.summary
15
+ s.license = "MIT"
15
16
 
16
17
  s.rubyforge_project = "niftp"
17
18
 
@@ -27,12 +28,12 @@ Gem::Specification.new do |s|
27
28
  s.extra_rdoc_files = ["README.md"] + Dir.glob("doc/*")
28
29
 
29
30
  # Dependencies
30
- s.add_dependency "ftpfxp", ">= 0.0.4"
31
- s.add_dependency "retryable", ">= 1.3"
32
- s.add_dependency "activesupport", ">= 2.0"
33
- s.add_dependency "i18n", ">= 0.5"
34
- s.add_development_dependency "shoulda", ">= 2.11"
35
- s.add_development_dependency "mocha", ">= 0.9"
36
- s.add_development_dependency "xml-simple", ">= 1.0"
37
- s.add_development_dependency "rake", ">= 0.8"
31
+ s.add_dependency "ftpfxp", ">= 0.0.4"
32
+ s.add_dependency "retryable", ">= 2.0"
33
+ s.add_dependency "i18n", ">= 0.5"
34
+ s.add_development_dependency "minitest", "~> 4.7"
35
+ s.add_development_dependency "guard", "~> 1.8.3"
36
+ s.add_development_dependency "guard-minitest", "~> 1.0.1"
37
+ s.add_development_dependency "mocha", "~> 0.14"
38
+ s.add_development_dependency "rake"
38
39
  end
data/test/niftp_test.rb CHANGED
@@ -1,113 +1,113 @@
1
1
  require "test_helper"
2
2
  require File.expand_path('../../lib/niftp', __FILE__)
3
3
 
4
- class NiFTPTest < Test::Unit::TestCase
5
- context "An object mixing in the NiFTP module" do
6
- setup do
7
- @object = Object.new.extend NiFTP
8
- @options = {}
9
- @host = "localhost"
10
- @ftp = stub_everything
11
- end
4
+ module NiFTP
5
+ class NiFTPTest < TestCase
6
+ describe "An object mixing in the NiFTP module" do
12
7
 
13
- should "be accessible via the Niftp shortcut" do
14
- assert_equal Niftp, NiFTP
15
- end
8
+ let(:object) { Object.new.extend NiFTP }
9
+ let(:host) { "localhost" }
10
+ let(:ftp) { stub_everything }
16
11
 
17
- should "raise a runtime errors if the :tries option is less than 1" do
18
- assert_raise(RuntimeError) { @object.ftp(@host, { :tries => 0 }) }
19
- end
12
+ it "must be accessible via the Niftp shortcut" do
13
+ Niftp.must_equal NiFTP
14
+ end
20
15
 
21
- should "connect to the FTP server with the default port" do
22
- stub_ftp
23
- @ftp.expects(:connect).with(@host, 21).once.returns(stub_everything)
24
- @object.ftp(@host)
25
- end
16
+ it "must raise a runtime errors if the :tries option is less than 1" do
17
+ assert_raises(RuntimeError) { object.ftp(host, { :tries => 0 }) }
18
+ end
26
19
 
27
- should "connect to the FTP server with the optional port" do
28
- stub_ftp
29
- @ftp.expects(:connect).with(@host, 2121).once.returns(stub_everything)
30
- @object.ftp(@host, { :port => 2121 })
31
- end
20
+ it "must connect to the FTP server with the default port" do
21
+ stub_ftp
22
+ ftp.expects(:connect).with(host, 21).once.returns(stub_everything)
23
+ object.ftp(host)
24
+ end
32
25
 
33
- should "login to the FTP server with the default username and password" do
34
- stub_ftp
35
- @ftp.expects(:login).with("", "")
36
- @object.ftp(@host)
37
- end
26
+ it "must connect to the FTP server with the optional port" do
27
+ stub_ftp
28
+ ftp.expects(:connect).with(host, 2121).once.returns(stub_everything)
29
+ object.ftp(host, { :port => 2121 })
30
+ end
38
31
 
39
- should "login to the FTP server with the optional username" do
40
- stub_ftp
41
- @ftp.expects(:login).with("anonymous", "")
42
- @object.ftp(@host, { :username => "anonymous" })
43
- end
32
+ it "must login to the FTP server with the default username and password" do
33
+ stub_ftp
34
+ ftp.expects(:login).with("", "")
35
+ object.ftp(host)
36
+ end
44
37
 
45
- should "login to the FTP server with the optional password" do
46
- stub_ftp
47
- @ftp.expects(:login).with("", "some password")
48
- @object.ftp(@host, { :password => "some password" })
49
- end
38
+ it "must login to the FTP server with the optional username" do
39
+ stub_ftp
40
+ ftp.expects(:login).with("anonymous", "")
41
+ object.ftp(host, { :username => "anonymous" })
42
+ end
50
43
 
51
- should "execute any arbitrary FTP code (i.e. the block)" do
52
- stub_ftp
53
- block_output = nil
54
- @object.ftp(@host) do |ftp|
55
- block_output = "block was executed"
44
+ it "must login to the FTP server with the optional password" do
45
+ stub_ftp
46
+ ftp.expects(:login).with("", "some password")
47
+ object.ftp(host, { :password => "some password" })
56
48
  end
57
- assert_equal "block was executed", block_output
58
- end
59
49
 
60
- should "close the FTP connection" do
61
- stub_ftp
62
- @ftp.expects(:close).once
63
- @object.ftp(@host)
64
- end
50
+ it "must execute any arbitrary FTP code (i.e. the block)" do
51
+ stub_ftp
52
+ block_output = nil
53
+ object.ftp(host) do |ftp|
54
+ block_output = "block was executed"
55
+ end
56
+ "block was executed".must_equal block_output
57
+ end
65
58
 
66
- should "use the retryable defauls when they're not explicitly set" do
67
- Net::FTP.stubs(:new => @ftp)
68
- @object.expects(:retryable).with(:tries => 2, :sleep => 1,
69
- :on => StandardError, :matching => /.*/)
70
- @object.ftp(@host) { }
71
- end
59
+ it "must close the FTP connection" do
60
+ stub_ftp
61
+ ftp.expects(:close).once
62
+ object.ftp(host)
63
+ end
72
64
 
73
- should "use the :tries option instead of the default" do
74
- Net::FTP.expects(:new).times(3).returns(@ftp)
75
- assert_raise(RuntimeError) do
76
- @object.ftp(@host, {:tries => 3 }) do |ftp_client|
77
- raise "testing retryable gem"
65
+ it "must use the retryable defauls when they're not explicitly set" do
66
+ Net::FTP.stubs(:new => ftp)
67
+ Retryable.expects(:retryable).with(:tries => 2, :sleep => 1,
68
+ :on => StandardError, :matching => /.*/)
69
+ object.ftp(host) { }
70
+ end
71
+
72
+ it "must use the :tries option instead of the default" do
73
+ Net::FTP.expects(:new).times(3).returns(ftp)
74
+ assert_raises(RuntimeError) do
75
+ object.ftp(host, {:tries => 3 }) do |ftp_client|
76
+ raise "testing retryable gem"
77
+ end
78
78
  end
79
79
  end
80
- end
81
80
 
82
- should "close the FTP connection when there is an exception" do
83
- Net::FTP.expects(:new).times(2).returns(@ftp)
84
- @ftp.expects(:close).times(2)
85
- assert_raise(RuntimeError) do
86
- @object.ftp(@host) { |ftp_client| raise "testing close"}
81
+ it "must close the FTP connection when there is an exception" do
82
+ Net::FTP.expects(:new).times(2).returns(ftp)
83
+ ftp.expects(:close).times(2)
84
+ assert_raises(RuntimeError) do
85
+ object.ftp(host) { |ftp_client| raise "testing close"}
86
+ end
87
87
  end
88
- end
89
88
 
90
- should "use a five second (default) timeout when connecting" do
91
- stub_ftp
92
- Timeout.expects(:timeout).with(30)
93
- @object.ftp(@host)
94
- end
89
+ it "must use a 30 second (default) timeout when connecting" do
90
+ stub_ftp
91
+ Timeout.expects(:timeout).with(30)
92
+ object.ftp(host)
93
+ end
95
94
 
96
- should "use the :timeout option instead of the default" do
97
- stub_ftp
98
- Timeout.expects(:timeout).with(1)
99
- @object.ftp(@host, { :timeout => 1 })
100
- end
95
+ it "must use the :timeout option instead of the default" do
96
+ stub_ftp
97
+ Timeout.expects(:timeout).with(1)
98
+ object.ftp(host, { :timeout => 1 })
99
+ end
101
100
 
102
- should "use the FTPFXP (FTPS) library when instructed" do
103
- Net::FTPFXPTLS.expects(:new).once.returns(@ftp)
104
- @object.ftp(@host, options = { :ftps => true })
101
+ it "must use the FTPFXP (FTPS) library when instructed" do
102
+ Net::FTPFXPTLS.expects(:new).once.returns(ftp)
103
+ object.ftp(host, { :ftps => true })
104
+ end
105
105
  end
106
- end
107
106
 
108
- private
107
+ private
109
108
 
110
- def stub_ftp
111
- Net::FTP.stubs(:new => @ftp)
109
+ def stub_ftp
110
+ Net::FTP.stubs(:new => ftp)
111
+ end
112
112
  end
113
- end
113
+ end
data/test/test_helper.rb CHANGED
@@ -1,7 +1,8 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
- require 'mocha'
1
+ require "minitest/autorun"
2
+ require "minitest/pride"
3
+ require 'mocha/setup'
5
4
 
6
- class Test::Unit::TestCase
5
+ module NiFTP
6
+ class TestCase < Minitest::Spec
7
+ end
7
8
  end
metadata CHANGED
@@ -1,104 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: niftp
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
5
- prerelease:
4
+ version: 2.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Christopher R. Murphy
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-09-05 00:00:00.000000000Z
11
+ date: 2015-05-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: ftpfxp
16
- requirement: &2160535080 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.0.4
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *2160535080
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.4
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: retryable
27
- requirement: &2160533960 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
- version: '1.3'
33
+ version: '2.0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *2160533960
36
- - !ruby/object:Gem::Dependency
37
- name: activesupport
38
- requirement: &2160532840 !ruby/object:Gem::Requirement
39
- none: false
36
+ version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
- - - ! '>='
38
+ - - ">="
42
39
  - !ruby/object:Gem::Version
43
40
  version: '2.0'
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: *2160532840
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: i18n
49
- requirement: &2160531900 !ruby/object:Gem::Requirement
50
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
51
44
  requirements:
52
- - - ! '>='
45
+ - - ">="
53
46
  - !ruby/object:Gem::Version
54
47
  version: '0.5'
55
48
  type: :runtime
56
49
  prerelease: false
57
- version_requirements: *2160531900
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0.5'
58
55
  - !ruby/object:Gem::Dependency
59
- name: shoulda
60
- requirement: &2160531280 !ruby/object:Gem::Requirement
61
- none: false
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
62
58
  requirements:
63
- - - ! '>='
59
+ - - "~>"
64
60
  - !ruby/object:Gem::Version
65
- version: '2.11'
61
+ version: '4.7'
66
62
  type: :development
67
63
  prerelease: false
68
- version_requirements: *2160531280
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.7'
69
69
  - !ruby/object:Gem::Dependency
70
- name: mocha
71
- requirement: &2160530200 !ruby/object:Gem::Requirement
72
- none: false
70
+ name: guard
71
+ requirement: !ruby/object:Gem::Requirement
73
72
  requirements:
74
- - - ! '>='
73
+ - - "~>"
75
74
  - !ruby/object:Gem::Version
76
- version: '0.9'
75
+ version: 1.8.3
77
76
  type: :development
78
77
  prerelease: false
79
- version_requirements: *2160530200
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.8.3
80
83
  - !ruby/object:Gem::Dependency
81
- name: xml-simple
82
- requirement: &2160528740 !ruby/object:Gem::Requirement
83
- none: false
84
+ name: guard-minitest
85
+ requirement: !ruby/object:Gem::Requirement
84
86
  requirements:
85
- - - ! '>='
87
+ - - "~>"
86
88
  - !ruby/object:Gem::Version
87
- version: '1.0'
89
+ version: 1.0.1
88
90
  type: :development
89
91
  prerelease: false
90
- version_requirements: *2160528740
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: mocha
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.14'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.14'
91
111
  - !ruby/object:Gem::Dependency
92
112
  name: rake
93
- requirement: &2160527100 !ruby/object:Gem::Requirement
94
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
95
114
  requirements:
96
- - - ! '>='
115
+ - - ">="
97
116
  - !ruby/object:Gem::Version
98
- version: '0.8'
117
+ version: '0'
99
118
  type: :development
100
119
  prerelease: false
101
- version_requirements: *2160527100
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
102
125
  description: NiFTP makes Ruby's decidedly un-nifty Net::FTP library easier to use.
103
126
  email:
104
127
  - chmurph2+git@gmail.com
@@ -107,8 +130,11 @@ extensions: []
107
130
  extra_rdoc_files:
108
131
  - README.md
109
132
  files:
110
- - .gitignore
133
+ - ".gitignore"
134
+ - ".travis.yml"
135
+ - CONTRIBUTING.md
111
136
  - Gemfile
137
+ - Guardfile
112
138
  - MIT-LICENSE
113
139
  - README.md
114
140
  - Rakefile
@@ -118,29 +144,29 @@ files:
118
144
  - test/niftp_test.rb
119
145
  - test/test_helper.rb
120
146
  homepage: https://github.com/chmurph2/NiFTP
121
- licenses: []
147
+ licenses:
148
+ - MIT
149
+ metadata: {}
122
150
  post_install_message:
123
151
  rdoc_options:
124
- - --include=examples --main README.md
152
+ - "--include=examples --main README.md"
125
153
  require_paths:
126
154
  - lib
127
155
  required_ruby_version: !ruby/object:Gem::Requirement
128
- none: false
129
156
  requirements:
130
- - - ! '>='
157
+ - - ">="
131
158
  - !ruby/object:Gem::Version
132
159
  version: '0'
133
160
  required_rubygems_version: !ruby/object:Gem::Requirement
134
- none: false
135
161
  requirements:
136
- - - ! '>='
162
+ - - ">="
137
163
  - !ruby/object:Gem::Version
138
164
  version: '0'
139
165
  requirements: []
140
166
  rubyforge_project: niftp
141
- rubygems_version: 1.8.17
167
+ rubygems_version: 2.2.3
142
168
  signing_key:
143
- specification_version: 3
169
+ specification_version: 4
144
170
  summary: NiFTP makes Ruby's decidedly un-nifty Net::FTP library easier to use.
145
171
  test_files:
146
172
  - test/niftp_test.rb