niftp 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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