serverless-rack 1.0.2 → 1.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b325c23f99696047036bb5c48c6f8def6c0b721a56e5db67ccfd6ef6d5aa6ed9
4
- data.tar.gz: 7be7f5a9cffa63d8444a0fa6fc81b0d3372cd71f81df8703a5682e1ab342e596
3
+ metadata.gz: d054df889e1a091b14b03de69cd43fba9186fd0b7c126f036e32a7c581f230da
4
+ data.tar.gz: f03682869870aafd564e76ad6d8ff54a88eeec164152dd6e1e0584348c57d518
5
5
  SHA512:
6
- metadata.gz: 7e0383afd67ebfafc0c962940a151a3812c9866adf3061d335c210000a6c9e7258cae3352d765de319090685a0de2a36efc43c2a465388d023b4a55f5467aa59
7
- data.tar.gz: ff5cd3e42a3397d82450719276118114c649fea910dda321874cf3fd2e5d6252de520d6e7780c7e4b990b9bb45c48e92bb67ea2d301e48da43e87305e8a43445
6
+ metadata.gz: ffa6d4107b258984e244d5fee0a0a2b870faee2d4b72fd3fd97cb2347ed40fba687426bfbcf106e5ce6cd9045e67842f1d5ffac2ef830b2ab4279c9f67d601e4
7
+ data.tar.gz: 10e61fa0152cdbc561e9dfb09de252377228af59d1df691c2783ad9ba1a320f84843b616651dce5485be5079d85b518e202ef4375e82fff42111367ae0f3b11c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,36 @@
1
+ # 1.0.7
2
+
3
+ - Improved error handling for Docker processes (#20 and #21)
4
+
5
+ _Shalvah_
6
+
7
+ # 1.0.6
8
+
9
+ - Upgrade dependencies
10
+ - Add a dockerImage config option to override the docker image to be used for compiling gems (defaults to the lambci ruby images) (#17)
11
+
12
+ _Benjamin Curtis_
13
+
14
+ - Cache the bundle that is created by docker to avoid recompiling gems (#17)
15
+
16
+ _Benjamin Curtis_
17
+
18
+ - Handle empty `API_GATEWAY_BASE_PATH` (#14)
19
+
20
+ _Joel Van Horn_
21
+
22
+ # 1.0.5
23
+
24
+ - Upgrade dependencies
25
+
26
+ # 1.0.4
27
+
28
+ - Support `configPath` option when invoking `sls rack serve` (#5)
29
+
30
+ # 1.0.3
31
+
32
+ - Upgrade dependencies
33
+
1
34
  # 1.0.2
2
35
 
3
36
  - Remove `BUNDLED WITH` from Gemfile to allow using different version of
data/README.md CHANGED
@@ -139,13 +139,23 @@ For more information, see https://bundler.io/docs.html.
139
139
 
140
140
  If your application depends on any gems that include compiled binaries, these
141
141
  must be compiled for the lambda execution environment. Enabling the `dockerizeBundler` configuration
142
- option will fetch and build the gems using a [docker image](https://hub.docker.com/r/logandk/serverless-rack-bundler)
143
- that emulates the lambda environment:
142
+ option will fetch and build the gems using a docker image that emulates the lambda environment:
144
143
 
145
144
  ```yaml
146
145
  custom:
147
146
  rack:
148
- dockerizeBundler: false
147
+ dockerizeBundler: true
148
+ ```
149
+
150
+ The default docker image that will be used will match the runtime you are using.
151
+ That is, if you are using the `ruby2.7` runtime, then the docker image will be
152
+ `logandk/serverless-rack-bundler:ruby2.7`. You can override the docker image with the
153
+ `dockerImage` configuration option:
154
+
155
+ ```yaml
156
+ custom:
157
+ rack:
158
+ dockerImage: lambci/lambda:build-ruby2.5
149
159
  ```
150
160
 
151
161
  ### Bundler configuration
@@ -219,6 +229,8 @@ $ sls rack serve -p 8000
219
229
  When running locally, an environment variable named `IS_OFFLINE` will be set to `True`.
220
230
  So, if you want to know when the application is running locally, check `ENV["IS_OFFLINE"]`.
221
231
 
232
+ For use with the `serverless-offline` plugin, run `sls rack install` prior to `sls offline`.
233
+
222
234
  ### Remote command execution
223
235
 
224
236
  The `rack exec` command lets you execute ruby code remotely:
@@ -15,17 +15,19 @@ TEXT_MIME_TYPES = [
15
15
  'image/svg+xml'
16
16
  ].freeze
17
17
 
18
+ def base_path
19
+ "/#{ENV['API_GATEWAY_BASE_PATH']}" unless ENV['API_GATEWAY_BASE_PATH'].to_s.empty?
20
+ end
21
+
18
22
  def keepalive_event?(event)
19
23
  ['aws.events', 'serverless-plugin-warmup'].include?(event['source'])
20
24
  end
21
25
 
22
26
  def parse_script_name(event, headers)
23
- if ENV['API_GATEWAY_BASE_PATH']
24
- "/#{ENV['API_GATEWAY_BASE_PATH']}"
25
- elsif (headers['Host'] || '').include?('amazonaws.com')
27
+ if base_path.nil? && (headers['Host'] || '').include?('amazonaws.com')
26
28
  "/#{event['requestContext']['stage']}"
27
29
  else
28
- ''
30
+ base_path.to_s
29
31
  end
30
32
  end
31
33
 
@@ -33,12 +35,11 @@ def parse_path_info(event)
33
35
  # If a user is using a custom domain on API Gateway, they may have a base
34
36
  # path in their URL. This allows us to strip it out via an optional
35
37
  # environment variable.
36
- if ENV['API_GATEWAY_BASE_PATH']
37
- base_path = "/#{ENV['API_GATEWAY_BASE_PATH']}"
38
- return event['path'][base_path.length..-1] if event['path'].start_with?(base_path)
38
+ if base_path && event['path'].start_with?(base_path)
39
+ event['path'][base_path.length..-1]
40
+ else
41
+ event['path']
39
42
  end
40
-
41
- event['path']
42
43
  end
43
44
 
44
45
  def parse_query_string(event)
@@ -59,9 +60,11 @@ end
59
60
 
60
61
  def parse_headers(event)
61
62
  if event.include? 'multiValueHeaders'
62
- Rack::Utils::HeaderHash.new((event['multiValueHeaders'] || {}).map do |key, value|
63
- [key, value.join("\n")]
64
- end.to_h)
63
+ Rack::Utils::HeaderHash.new(
64
+ (event['multiValueHeaders'] || {}).transform_values do |value|
65
+ value.join("\n")
66
+ end
67
+ )
65
68
  else
66
69
  Rack::Utils::HeaderHash.new(event['headers'] || {})
67
70
  end
@@ -166,11 +169,12 @@ end
166
169
 
167
170
  def format_split_headers(headers:)
168
171
  headers = headers.to_hash
172
+ keys = headers.keys
169
173
 
170
174
  # If there are headers multiple occurrences, e.g. Set-Cookie, create
171
175
  # case-mutated variations in order to pass them through APIGW.
172
176
  # This is a hack that's currently needed.
173
- headers.keys.each do |key|
177
+ keys.each do |key|
174
178
  values = headers[key].split("\n")
175
179
 
176
180
  next if values.size < 2
@@ -187,9 +191,9 @@ def format_split_headers(headers:)
187
191
  end
188
192
 
189
193
  def format_grouped_headers(headers:)
190
- { 'multiValueHeaders' => headers.map do |key, value|
191
- [key, value.split("\n")]
192
- end.to_h }
194
+ { 'multiValueHeaders' => headers.transform_values do |value|
195
+ value.split("\n")
196
+ end }
193
197
  end
194
198
 
195
199
  def format_response(event:, status:, headers:, body:, text_mime_types:)
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Gem::Specification.new do |s|
2
4
  s.name = 'serverless-rack'
3
- s.version = '1.0.2'
5
+ s.version = '1.0.7'
4
6
  s.summary =
5
7
  'Serverless plugin to deploy Ruby Rack applications (Sinatra/Padrino/Cuba etc.) '\
6
8
  'and bundle gems'
@@ -21,6 +23,6 @@ Gem::Specification.new do |s|
21
23
  s.homepage = 'https://github.com/logandk/serverless-rack'
22
24
  s.license = 'MIT'
23
25
 
24
- s.required_ruby_version = '>= 2.2.0'
26
+ s.required_ruby_version = '>= 2.4.0'
25
27
  s.add_dependency 'rack', '~> 2.0'
26
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serverless-rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Logan Raarup
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-15 00:00:00.000000000 Z
11
+ date: 2021-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -50,15 +50,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 2.2.0
53
+ version: 2.4.0
54
54
  required_rubygems_version: !ruby/object:Gem::Requirement
55
55
  requirements:
56
56
  - - ">="
57
57
  - !ruby/object:Gem::Version
58
58
  version: '0'
59
59
  requirements: []
60
- rubyforge_project:
61
- rubygems_version: 2.7.6
60
+ rubygems_version: 3.1.2
62
61
  signing_key:
63
62
  specification_version: 4
64
63
  summary: Serverless plugin to deploy Ruby Rack applications (Sinatra/Padrino/Cuba