tus-server 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8315eaaeabacbc5351b82d8b5838c293e4f6e1e4
4
- data.tar.gz: 3cce2414c7807e141d8373e74616df61a98a1947
3
+ metadata.gz: 75d994c5e03d4027f723c3bb32dc17589e1fe6bc
4
+ data.tar.gz: 300bcd61d11c05963fea1d6e02f4684b35a3a8e7
5
5
  SHA512:
6
- metadata.gz: b03e67d013332433940a45ec00d972afe18336c2612f3735bb0ac8f301fad7407e1be13b9cc2c97538fab28cb5fa109c96d3620c8fbc30478f3dee9a1e4b79d5
7
- data.tar.gz: 3cfdc95034e79c511bbcdf0d67e5000c568c7e6a05f7f1e32d7271354d9ed7b7efc42c29fcda34da4926fa1a70f1f49c4b8126f2de9b472ad5cb025b84964bbd
6
+ metadata.gz: f3e9d86ff10b063367dda70bd44bc38d8f56485fabfaa209f7f341ebd7c87b7cd3f0cf4e40855e142577c0e40cde763effe349fc54ed8bc2e7c93046eac566cb
7
+ data.tar.gz: 63e466d8dc751465871cd74d951357fc3918cb8ef0a60a35124dd88b452141be1a4c5e057c7a3944208ca4e039c76f555df86e319f63a75aeb188e6df65a5986
data/README.md CHANGED
@@ -86,19 +86,50 @@ end
86
86
  $ ruby tus.rb --stdout # enable logging
87
87
  ```
88
88
 
89
+ This will run the tus server app on the root URL; if you want to run it on some
90
+ path you can use `Rack::Builder`:
91
+
92
+ ```rb
93
+ class GoliathTusServer < Goliath::RackProxy
94
+ rack_app Rack::Builder.new {
95
+ map "/files" do
96
+ run Tus::Server
97
+ end
98
+ }
99
+ rewindable_input false # set to true if you're using checksums
100
+ end
101
+ ```
102
+
89
103
  ### Unicorn
90
104
 
91
105
  Like Goliath, Unicorn also support streaming uploads, and tus-ruby-server knows
92
106
  how to automatically recover from `Unicorn::ClientShutdown` exceptions during
93
107
  upload, storing data that it has received up until that point. Just note that
94
108
  in order to achieve streaming uploads, Nginx should be configured **not** to
95
- buffer incoming requests.
109
+ buffer incoming requests, and to disable worker timeout to enable long running
110
+ upload requests:
111
+
112
+ ```rb
113
+ timeout 60*60*24*30 # set worker timeout to 30 days
114
+ ```
96
115
 
97
116
  But it's also fine to have Nginx buffer requests, just note that in this case
98
117
  Nginx won't forward incomplete upload requests to tus-ruby-server, so in order
99
118
  for resumable upload to be possible the client needs to send data in multiple
100
119
  upload requests (which can then be retried individually).
101
120
 
121
+ Unless you're using the "checksum" tus feature, you might want to consider
122
+ disabling rewindability of request body, to prevent Unicorn from additionally
123
+ caching received data onto the disk (since that's not necessary unless request
124
+ body needs to be rewinded).
125
+
126
+ ```rb
127
+ # config/unicorn.rb
128
+ # ...
129
+
130
+ rewindable_input false
131
+ ```
132
+
102
133
  ### Other web servers
103
134
 
104
135
  It's perfectly feasible to run tus-ruby-server on web servers other than
@@ -179,10 +210,10 @@ chunks, meaning the length of each partial upload needs to be a multiple of the
179
210
 
180
211
  Amazon S3 is probably one of the most popular services for storing files, and
181
212
  tus-ruby-server ships with `Tus::Storage::S3` which utilizes S3's multipart API
182
- to upload files, and depends on the [aws-sdk] gem.
213
+ to upload files, and depends on the [aws-sdk-s3] gem.
183
214
 
184
215
  ```rb
185
- gem "aws-sdk", "~> 2.1"
216
+ gem "aws-sdk-s3", "~> 1.2"
186
217
  ```
187
218
 
188
219
  ```rb
@@ -328,9 +359,9 @@ The tus-ruby-server was inspired by [rubytus].
328
359
  [Shrine]: https://github.com/janko-m/shrine
329
360
  [trailing headers]: https://tools.ietf.org/html/rfc7230#section-4.1.2
330
361
  [rubytus]: https://github.com/picocandy/rubytus
331
- [aws-sdk]: https://github.com/aws/aws-sdk-ruby
332
- [`Aws::S3::Client#initialize`]: http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html#initialize-instance_method
333
- [`Aws::S3::Client#create_multipart_upload`]: http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html#create_multipart_upload-instance_method
362
+ [aws-sdk-s3]: https://github.com/aws/aws-sdk-ruby/tree/master/gems/aws-sdk-s3
363
+ [`Aws::S3::Client#initialize`]: http://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/Client.html#initialize-instance_method
364
+ [`Aws::S3::Client#create_multipart_upload`]: http://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/Client.html#create_multipart_upload-instance_method
334
365
  [Range requests]: https://tools.ietf.org/html/rfc7233
335
366
  [Goliath]: https://github.com/postrank-labs/goliath
336
367
  [EventMachine]: https://github.com/eventmachine/eventmachine
@@ -1,5 +1,13 @@
1
1
  # frozen-string-literal: true
2
- require "aws-sdk"
2
+ begin
3
+ require "aws-sdk-s3"
4
+ if Gem::Version.new(Aws::S3::GEM_VERSION) < Gem::Version.new("1.2.0")
5
+ raise "Tus::Storage::S3 requires aws-sdk-s3 version 1.2.0 or above"
6
+ end
7
+ rescue LoadError
8
+ require "aws-sdk"
9
+ Aws.eager_autoload!(services: ["S3"])
10
+ end
3
11
 
4
12
  require "tus/info"
5
13
  require "tus/errors"
@@ -9,8 +17,6 @@ require "cgi"
9
17
  require "fiber"
10
18
  require "stringio"
11
19
 
12
- Aws.eager_autoload!(services: ["S3"])
13
-
14
20
  module Tus
15
21
  module Storage
16
22
  class S3
@@ -35,7 +41,7 @@ module Tus
35
41
  options[:content_type] = tus_info.metadata["content_type"]
36
42
 
37
43
  if filename = tus_info.metadata["filename"]
38
- # Aws-sdk doesn't sign non-ASCII characters correctly, and browsers
44
+ # Aws-sdk-s3 doesn't sign non-ASCII characters correctly, and browsers
39
45
  # will automatically URI-decode filenames.
40
46
  filename = CGI.escape(filename).gsub("+", " ")
41
47
 
data/tus-server.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "tus-server"
3
- gem.version = "1.1.1"
3
+ gem.version = "1.1.2"
4
4
 
5
5
  gem.required_ruby_version = ">= 2.1"
6
6
 
@@ -22,7 +22,5 @@ Gem::Specification.new do |gem|
22
22
  gem.add_development_dependency "cucumber"
23
23
  gem.add_development_dependency "unicorn"
24
24
  gem.add_development_dependency "mongo"
25
- gem.add_development_dependency "aws-sdk", "~> 2.0"
26
- gem.add_development_dependency "goliath"
27
- gem.add_development_dependency "async-rack", ">= 0.5.1"
25
+ gem.add_development_dependency "aws-sdk-s3", "~> 1.2"
28
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tus-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janko Marohnić
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-23 00:00:00.000000000 Z
11
+ date: 2017-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: roda
@@ -109,47 +109,19 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: aws-sdk
112
+ name: aws-sdk-s3
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '2.0'
117
+ version: '1.2'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '2.0'
125
- - !ruby/object:Gem::Dependency
126
- name: goliath
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: async-rack
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: 0.5.1
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: 0.5.1
124
+ version: '1.2'
153
125
  description:
154
126
  email:
155
127
  - janko.marohnic@gmail.com
@@ -190,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
162
  version: '0'
191
163
  requirements: []
192
164
  rubyforge_project:
193
- rubygems_version: 2.2.5
165
+ rubygems_version: 2.6.11
194
166
  signing_key:
195
167
  specification_version: 4
196
168
  summary: Ruby server implementation of tus.io, the open protocol for resumable file