lamby 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/cicd.yml +17 -0
  3. data/.gitignore +1 -1
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +25 -0
  6. data/Dockerfile +12 -0
  7. data/Gemfile.lock +82 -83
  8. data/README.md +9 -3
  9. data/Rakefile +1 -0
  10. data/bin/_setup +6 -0
  11. data/bin/_test +6 -0
  12. data/bin/bootstrap +3 -17
  13. data/bin/setup +3 -3
  14. data/bin/test +6 -3
  15. data/bin/update +2 -2
  16. data/docker-compose.yml +14 -0
  17. data/lamby.gemspec +1 -1
  18. data/lib/lamby.rb +2 -1
  19. data/lib/lamby/handler.rb +16 -3
  20. data/lib/lamby/logger.rb +13 -9
  21. data/lib/lamby/rack.rb +11 -9
  22. data/lib/lamby/rack_alb.rb +11 -14
  23. data/lib/lamby/rack_http.rb +80 -0
  24. data/lib/lamby/{rack_api.rb → rack_rest.rb} +7 -3
  25. data/lib/lamby/ssm_parameter_store.rb +1 -1
  26. data/lib/lamby/templates.rake +4 -3
  27. data/lib/lamby/templates/{application_load_balancer.rb → alb.rb} +1 -1
  28. data/lib/lamby/templates/{application_load_balancer → alb}/app.rb +0 -0
  29. data/lib/lamby/templates/{application_load_balancer → alb}/build +1 -1
  30. data/lib/lamby/templates/{application_load_balancer → alb}/deploy +1 -1
  31. data/lib/lamby/templates/{application_load_balancer → alb}/template.yaml +1 -1
  32. data/lib/lamby/templates/{api_gateway.rb → http.rb} +2 -2
  33. data/lib/lamby/templates/{api_gateway → http}/app.rb +1 -1
  34. data/lib/lamby/templates/{api_gateway → http}/build +1 -1
  35. data/lib/lamby/templates/{api_gateway → http}/deploy +1 -1
  36. data/lib/lamby/templates/http/template.yaml +48 -0
  37. data/lib/lamby/templates/rest.rb +25 -0
  38. data/lib/lamby/templates/rest/app.rb +10 -0
  39. data/lib/lamby/templates/rest/build +23 -0
  40. data/lib/lamby/templates/rest/deploy +22 -0
  41. data/lib/lamby/templates/{api_gateway → rest}/template.yaml +2 -2
  42. data/lib/lamby/templates/shared.rb +3 -1
  43. data/lib/lamby/version.rb +1 -1
  44. data/vendor/.keep +0 -0
  45. metadata +29 -23
  46. data/.python-version +0 -1
  47. data/.travis.yml +0 -17
  48. data/Brewfile +0 -5
  49. data/Pipfile +0 -13
  50. data/Pipfile.lock +0 -370
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca2f5b0087440de0f6a7383ac642061e199428271981d61dcbd7f2800853faec
4
- data.tar.gz: 1ad5ba4ef2a7c8275d221ec9569424875d19586778f1ac042f62614f770780a9
3
+ metadata.gz: 18326760740ee9c10fd57da1a1d2400b0a09127a65ad908e1c298473983c3c45
4
+ data.tar.gz: 379e871079160326aa6e55aed63f3822b8e2f3aa0bf3c4fedf89fdf309ae01f7
5
5
  SHA512:
6
- metadata.gz: 9cfae4fad3a68553311974a8bb8a93208f9c4f20739cbdaa880d79d3967a65d49ebe01f1080214e2d111016614da399453fb68f30492697dd875ee5d283afe47
7
- data.tar.gz: 0c7ef072c05009db700629b81ebc6d77e7f5785e63b6d927217eccb2b3b597d7f7e284a9901104c5d71d7ea39524bba557eb1fa53302ac97be8660a6decd747d
6
+ metadata.gz: a19f7f5295ccf44518f18c1d22b0a3cdf1ecea9b3ffe882ec6fb7434b296dec1ec66215f9b6d28877f70f01968036196ca23ea0086c75c3eb185af98b7699ef4
7
+ data.tar.gz: 6c509a8044e195c7b66fd923358ab2b5b2253a8138629bebea4bf17035eb44a995f55723fef5bc92b972169533c235a9afebe471267b6531ea18dc78d3f1ba60
@@ -0,0 +1,17 @@
1
+ name: CI/CD
2
+ on: [push]
3
+ jobs:
4
+ cicd:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - name: Checkout
8
+ uses: actions/checkout@v1
9
+ - name: Bootstrap
10
+ run: |
11
+ ./bin/bootstrap
12
+ - name: Setup
13
+ run: |
14
+ ./bin/setup
15
+ - name: Test
16
+ run: |
17
+ ./bin/test
data/.gitignore CHANGED
@@ -5,6 +5,7 @@
5
5
  /pkg/
6
6
  /spec/reports/
7
7
  /tmp/
8
+ /vendor/bundle
8
9
  test/dummy_app/.gitignore
9
10
  test/dummy_app/app.rb
10
11
  test/dummy_app/template.yaml
@@ -12,4 +13,3 @@ test/dummy_app/bin/build
12
13
  test/dummy_app/bin/deploy
13
14
  test/dummy_app/tmp
14
15
  test/dummy_app/log/**/*
15
- test/dummy_app/public/**/*
@@ -1 +1 @@
1
- 2.5.5
1
+ 2.7.0
@@ -2,6 +2,31 @@
2
2
 
3
3
  See this http://keepachangelog.com link for information on how we want this documented formatted.
4
4
 
5
+ ## v2.0.0
6
+
7
+ Support for new API Gateway HTTP APIs!!!
8
+
9
+ #### Changed
10
+
11
+ * The `Lamby.handler` must have a `:rack` option. One of `:http`, `:rest`, `:alb`.
12
+ * Renamed template generators to match options above.
13
+ * The `lamby:install` task now defaults to HTTP API.
14
+ * Changed the name of `:api` rack option to `:rest`.
15
+ * Removed `export` from Dotenv files. Better Docker compatability.
16
+
17
+ #### Added
18
+
19
+ * New reack handler for HTTP API v1 and v2.
20
+ * Lots of backfill tests for, ALBs & REST APIs.
21
+
22
+
23
+ ## v1.0.3
24
+
25
+ #### Changed
26
+
27
+ * Change shebangs to `#!/usr/bin/env bash`
28
+
29
+
5
30
  ## v1.0.2
6
31
 
7
32
  #### Changed
@@ -0,0 +1,12 @@
1
+ FROM lambci/lambda:build-ruby2.7
2
+
3
+ # Lock down AWS SAM version.
4
+ RUN pip install awscli && \
5
+ pip uninstall --yes aws-sam-cli && \
6
+ pip install aws-sam-cli==0.45.0
7
+
8
+ # Asset Pipeline
9
+ RUN curl -sL https://rpm.nodesource.com/setup_12.x | bash - && \
10
+ yum install -y nodejs
11
+
12
+ WORKDIR /var/task
@@ -1,141 +1,141 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lamby (1.0.2)
4
+ lamby (2.0.0)
5
5
  rack
6
6
  rails
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actioncable (6.0.0)
12
- actionpack (= 6.0.0)
11
+ actioncable (6.0.2.2)
12
+ actionpack (= 6.0.2.2)
13
13
  nio4r (~> 2.0)
14
14
  websocket-driver (>= 0.6.1)
15
- actionmailbox (6.0.0)
16
- actionpack (= 6.0.0)
17
- activejob (= 6.0.0)
18
- activerecord (= 6.0.0)
19
- activestorage (= 6.0.0)
20
- activesupport (= 6.0.0)
15
+ actionmailbox (6.0.2.2)
16
+ actionpack (= 6.0.2.2)
17
+ activejob (= 6.0.2.2)
18
+ activerecord (= 6.0.2.2)
19
+ activestorage (= 6.0.2.2)
20
+ activesupport (= 6.0.2.2)
21
21
  mail (>= 2.7.1)
22
- actionmailer (6.0.0)
23
- actionpack (= 6.0.0)
24
- actionview (= 6.0.0)
25
- activejob (= 6.0.0)
22
+ actionmailer (6.0.2.2)
23
+ actionpack (= 6.0.2.2)
24
+ actionview (= 6.0.2.2)
25
+ activejob (= 6.0.2.2)
26
26
  mail (~> 2.5, >= 2.5.4)
27
27
  rails-dom-testing (~> 2.0)
28
- actionpack (6.0.0)
29
- actionview (= 6.0.0)
30
- activesupport (= 6.0.0)
31
- rack (~> 2.0)
28
+ actionpack (6.0.2.2)
29
+ actionview (= 6.0.2.2)
30
+ activesupport (= 6.0.2.2)
31
+ rack (~> 2.0, >= 2.0.8)
32
32
  rack-test (>= 0.6.3)
33
33
  rails-dom-testing (~> 2.0)
34
34
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
35
- actiontext (6.0.0)
36
- actionpack (= 6.0.0)
37
- activerecord (= 6.0.0)
38
- activestorage (= 6.0.0)
39
- activesupport (= 6.0.0)
35
+ actiontext (6.0.2.2)
36
+ actionpack (= 6.0.2.2)
37
+ activerecord (= 6.0.2.2)
38
+ activestorage (= 6.0.2.2)
39
+ activesupport (= 6.0.2.2)
40
40
  nokogiri (>= 1.8.5)
41
- actionview (6.0.0)
42
- activesupport (= 6.0.0)
41
+ actionview (6.0.2.2)
42
+ activesupport (= 6.0.2.2)
43
43
  builder (~> 3.1)
44
44
  erubi (~> 1.4)
45
45
  rails-dom-testing (~> 2.0)
46
46
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
47
- activejob (6.0.0)
48
- activesupport (= 6.0.0)
47
+ activejob (6.0.2.2)
48
+ activesupport (= 6.0.2.2)
49
49
  globalid (>= 0.3.6)
50
- activemodel (6.0.0)
51
- activesupport (= 6.0.0)
52
- activerecord (6.0.0)
53
- activemodel (= 6.0.0)
54
- activesupport (= 6.0.0)
55
- activestorage (6.0.0)
56
- actionpack (= 6.0.0)
57
- activejob (= 6.0.0)
58
- activerecord (= 6.0.0)
50
+ activemodel (6.0.2.2)
51
+ activesupport (= 6.0.2.2)
52
+ activerecord (6.0.2.2)
53
+ activemodel (= 6.0.2.2)
54
+ activesupport (= 6.0.2.2)
55
+ activestorage (6.0.2.2)
56
+ actionpack (= 6.0.2.2)
57
+ activejob (= 6.0.2.2)
58
+ activerecord (= 6.0.2.2)
59
59
  marcel (~> 0.3.1)
60
- activesupport (6.0.0)
60
+ activesupport (6.0.2.2)
61
61
  concurrent-ruby (~> 1.0, >= 1.0.2)
62
62
  i18n (>= 0.7, < 2)
63
63
  minitest (~> 5.1)
64
64
  tzinfo (~> 1.1)
65
- zeitwerk (~> 2.1, >= 2.1.8)
66
- aws-eventstream (1.0.2)
67
- aws-partitions (1.146.0)
68
- aws-sdk-core (3.48.2)
65
+ zeitwerk (~> 2.2)
66
+ aws-eventstream (1.0.3)
67
+ aws-partitions (1.287.0)
68
+ aws-sdk-core (3.92.0)
69
69
  aws-eventstream (~> 1.0, >= 1.0.2)
70
- aws-partitions (~> 1.0)
70
+ aws-partitions (~> 1, >= 1.239.0)
71
71
  aws-sigv4 (~> 1.1)
72
72
  jmespath (~> 1.0)
73
- aws-sdk-ssm (1.41.0)
74
- aws-sdk-core (~> 3, >= 3.48.2)
73
+ aws-sdk-ssm (1.73.0)
74
+ aws-sdk-core (~> 3, >= 3.71.0)
75
75
  aws-sigv4 (~> 1.1)
76
- aws-sigv4 (1.1.0)
76
+ aws-sigv4 (1.1.1)
77
77
  aws-eventstream (~> 1.0, >= 1.0.2)
78
- builder (3.2.3)
78
+ builder (3.2.4)
79
79
  coderay (1.1.2)
80
- concurrent-ruby (1.1.5)
81
- crass (1.0.5)
80
+ concurrent-ruby (1.1.6)
81
+ crass (1.0.6)
82
82
  erubi (1.9.0)
83
83
  globalid (0.4.2)
84
84
  activesupport (>= 4.2.0)
85
- i18n (1.7.0)
85
+ i18n (1.8.2)
86
86
  concurrent-ruby (~> 1.0)
87
87
  jmespath (1.4.0)
88
- loofah (2.3.1)
88
+ loofah (2.4.0)
89
89
  crass (~> 1.0.2)
90
90
  nokogiri (>= 1.5.9)
91
91
  mail (2.7.1)
92
92
  mini_mime (>= 0.1.1)
93
93
  marcel (0.3.3)
94
94
  mimemagic (~> 0.3.2)
95
- metaclass (0.0.4)
96
- method_source (0.9.2)
97
- mimemagic (0.3.3)
95
+ method_source (1.0.0)
96
+ mimemagic (0.3.4)
98
97
  mini_mime (1.0.2)
99
98
  mini_portile2 (2.4.0)
100
- minitest (5.11.3)
101
- mocha (1.8.0)
102
- metaclass (~> 0.0.1)
99
+ minitest (5.14.0)
100
+ minitest-focus (1.1.2)
101
+ minitest (>= 4, < 6)
102
+ mocha (1.11.2)
103
103
  nio4r (2.5.2)
104
- nokogiri (1.10.4)
104
+ nokogiri (1.10.9)
105
105
  mini_portile2 (~> 2.4.0)
106
- pry (0.12.2)
107
- coderay (~> 1.1.0)
108
- method_source (~> 0.9.0)
109
- rack (2.0.7)
106
+ pry (0.13.0)
107
+ coderay (~> 1.1)
108
+ method_source (~> 1.0)
109
+ rack (2.2.2)
110
110
  rack-test (1.1.0)
111
111
  rack (>= 1.0, < 3)
112
- rails (6.0.0)
113
- actioncable (= 6.0.0)
114
- actionmailbox (= 6.0.0)
115
- actionmailer (= 6.0.0)
116
- actionpack (= 6.0.0)
117
- actiontext (= 6.0.0)
118
- actionview (= 6.0.0)
119
- activejob (= 6.0.0)
120
- activemodel (= 6.0.0)
121
- activerecord (= 6.0.0)
122
- activestorage (= 6.0.0)
123
- activesupport (= 6.0.0)
112
+ rails (6.0.2.2)
113
+ actioncable (= 6.0.2.2)
114
+ actionmailbox (= 6.0.2.2)
115
+ actionmailer (= 6.0.2.2)
116
+ actionpack (= 6.0.2.2)
117
+ actiontext (= 6.0.2.2)
118
+ actionview (= 6.0.2.2)
119
+ activejob (= 6.0.2.2)
120
+ activemodel (= 6.0.2.2)
121
+ activerecord (= 6.0.2.2)
122
+ activestorage (= 6.0.2.2)
123
+ activesupport (= 6.0.2.2)
124
124
  bundler (>= 1.3.0)
125
- railties (= 6.0.0)
125
+ railties (= 6.0.2.2)
126
126
  sprockets-rails (>= 2.0.0)
127
127
  rails-dom-testing (2.0.3)
128
128
  activesupport (>= 4.2.0)
129
129
  nokogiri (>= 1.6)
130
130
  rails-html-sanitizer (1.3.0)
131
131
  loofah (~> 2.3)
132
- railties (6.0.0)
133
- actionpack (= 6.0.0)
134
- activesupport (= 6.0.0)
132
+ railties (6.0.2.2)
133
+ actionpack (= 6.0.2.2)
134
+ activesupport (= 6.0.2.2)
135
135
  method_source
136
136
  rake (>= 0.8.7)
137
137
  thor (>= 0.20.3, < 2.0)
138
- rake (12.3.2)
138
+ rake (13.0.1)
139
139
  sprockets (4.0.0)
140
140
  concurrent-ruby (~> 1.0)
141
141
  rack (> 1, < 3)
@@ -143,15 +143,14 @@ GEM
143
143
  actionpack (>= 4.0)
144
144
  activesupport (>= 4.0)
145
145
  sprockets (>= 3.0.0)
146
- sqlite3 (1.4.1)
147
- thor (0.20.3)
146
+ thor (1.0.1)
148
147
  thread_safe (0.3.6)
149
- tzinfo (1.2.5)
148
+ tzinfo (1.2.6)
150
149
  thread_safe (~> 0.1)
151
150
  websocket-driver (0.7.1)
152
151
  websocket-extensions (>= 0.1.0)
153
152
  websocket-extensions (0.1.4)
154
- zeitwerk (2.2.0)
153
+ zeitwerk (2.3.0)
155
154
 
156
155
  PLATFORMS
157
156
  ruby
@@ -161,10 +160,10 @@ DEPENDENCIES
161
160
  bundler
162
161
  lamby!
163
162
  minitest
163
+ minitest-focus
164
164
  mocha
165
165
  pry
166
166
  rake
167
- sqlite3
168
167
 
169
168
  BUNDLED WITH
170
- 1.17.3
169
+ 2.1.4
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- # Lamby [![Build Status](https://travis-ci.org/customink/lamby.svg?branch=master)](https://travis-ci.org/customink/lamby)
2
+ # Lamby [![Actions Status](https://github.com/customink/lamby/workflows/CI/CD/badge.svg)](https://github.com/customink/lamby/actions)
3
3
 
4
4
  <h2>Simple Rails &amp; AWS Lambda Integration</h2>
5
5
 
@@ -11,7 +11,7 @@ The goal of this project is to provide minimal code to allow your Rails applicat
11
11
 
12
12
  ```ruby
13
13
  def handler(event:, context:)
14
- Lamby.handler $app, event, context, rack: :alb
14
+ Lamby.handler $app, event, context, rack: :http
15
15
  end
16
16
  ```
17
17
 
@@ -27,7 +27,13 @@ https://lamby.custominktech.com/docs/installing_aws_sam
27
27
 
28
28
  ## Contributing
29
29
 
30
- After checking out the repo, run `./bin/setup` to install dependencies. Then, run `./bin/test` to run the tests.
30
+ After checking out the repo, run:
31
+
32
+ ```shell
33
+ $ ./bin/bootstrap
34
+ $ ./bin/setup
35
+ $ ./bin/test
36
+ ```
31
37
 
32
38
  Bug reports and pull requests are welcome on GitHub at https://github.com/customink/lamby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
33
39
 
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ ENV['RUBYOPT'] = '-W:no-deprecated -W:no-experimental'
1
2
  require "bundler/gem_tasks"
2
3
  require "rake/testtask"
3
4
 
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo '== Installing dependencies =='
5
+ bundle config set --local path 'vendor/bundle'
6
+ bundle install
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ export RAILS_ENV="test"
5
+
6
+ bundle exec rake test
@@ -1,20 +1,6 @@
1
1
  #!/bin/bash
2
-
3
2
  set -e
4
3
 
5
- if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ]; then
6
- brew bundle check || {
7
- echo "==> Installing Homebrew dependencies..."
8
- brew bundle --verbose
9
- }
10
- fi
11
-
12
- rbenv install \
13
- --skip-existing \
14
- $(cat .ruby-version)
15
-
16
- CFLAGS="-I$(brew --prefix zlib)/include" \
17
- LDFLAGS="-L$(brew --prefix zlib)/lib" \
18
- pyenv install \
19
- --skip-existing \
20
- $(cat .python-version)
4
+ echo '== Building containers =='
5
+ docker pull lambci/lambda:build-ruby2.7
6
+ docker-compose build
data/bin/setup CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
-
3
2
  set -e
4
3
 
5
- bundle install
6
- pipenv install
4
+ docker-compose run \
5
+ cicd \
6
+ ./bin/_setup
data/bin/test CHANGED
@@ -1,5 +1,8 @@
1
- #!/usr/bin/env bash
2
-
1
+ #!/bin/bash
3
2
  set -e
4
3
 
5
- bundle exec rake test
4
+ export RAILS_ENV="test"
5
+
6
+ docker-compose run \
7
+ cicd \
8
+ ./bin/_test
data/bin/update CHANGED
@@ -1,7 +1,7 @@
1
- #!/bin/bash
1
+ #!/usr/bin/env bash
2
2
 
3
3
  set -e
4
4
 
5
- pipenv --rm
5
+ rm -rf ./vendor/bundle
6
6
 
7
7
  ./bin/setup