lamby 1.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) 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 +51 -0
  6. data/Dockerfile +12 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +94 -79
  9. data/README.md +10 -4
  10. data/Rakefile +1 -0
  11. data/bin/_setup +6 -0
  12. data/bin/_test +6 -0
  13. data/bin/bootstrap +3 -17
  14. data/bin/setup +3 -3
  15. data/bin/test +6 -3
  16. data/bin/update +2 -2
  17. data/docker-compose.yml +14 -0
  18. data/lamby.gemspec +1 -2
  19. data/lib/lamby.rb +7 -3
  20. data/lib/lamby/handler.rb +16 -3
  21. data/lib/lamby/logger.rb +13 -9
  22. data/lib/lamby/rack.rb +11 -9
  23. data/lib/lamby/rack_alb.rb +11 -14
  24. data/lib/lamby/rack_http.rb +80 -0
  25. data/lib/lamby/{rack_api.rb → rack_rest.rb} +7 -3
  26. data/lib/lamby/ssm_parameter_store.rb +3 -3
  27. data/lib/lamby/templates.rake +4 -3
  28. data/lib/lamby/templates/{application_load_balancer.rb → alb.rb} +1 -1
  29. data/lib/lamby/templates/{application_load_balancer → alb}/app.rb +0 -0
  30. data/lib/lamby/templates/{application_load_balancer → alb}/build +3 -3
  31. data/lib/lamby/templates/{application_load_balancer → alb}/deploy +1 -1
  32. data/lib/lamby/templates/{application_load_balancer → alb}/template.yaml +1 -1
  33. data/lib/lamby/templates/{api_gateway.rb → http.rb} +2 -2
  34. data/lib/lamby/templates/{api_gateway → http}/app.rb +1 -1
  35. data/lib/lamby/templates/{api_gateway → http}/build +3 -3
  36. data/lib/lamby/templates/{api_gateway → http}/deploy +1 -1
  37. data/lib/lamby/templates/http/template.yaml +48 -0
  38. data/lib/lamby/templates/rest.rb +25 -0
  39. data/lib/lamby/templates/rest/app.rb +10 -0
  40. data/lib/lamby/templates/rest/build +23 -0
  41. data/lib/lamby/templates/rest/deploy +22 -0
  42. data/lib/lamby/templates/{api_gateway → rest}/template.yaml +2 -2
  43. data/lib/lamby/templates/shared.rb +3 -1
  44. data/lib/lamby/version.rb +1 -1
  45. data/vendor/.keep +0 -0
  46. metadata +29 -37
  47. data/.python-version +0 -1
  48. data/.travis.yml +0 -17
  49. data/Brewfile +0 -5
  50. data/Pipfile +0 -13
  51. data/Pipfile.lock +0 -370
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cad37e588b82d16978294d8ae866bdb90f67dbd82f8da8ad04f74c04515043d7
4
- data.tar.gz: f2301b796dfcfcd32ea21dd8dee9666257887e28022266a9e662c17f2a5df204
3
+ metadata.gz: 9bb411b8d5961ebef380fdd6148d5349481a9f8d5ec4f935e6d3db25647b8c81
4
+ data.tar.gz: 889122ece8d9d93a695f8d941f37e56e898dc20c4c3e529e07fe89b87b7f043d
5
5
  SHA512:
6
- metadata.gz: 0062a78076ce56c00ce31ba1813112f4e1341e24fd104df195131f4a5cde00142490d336ceacb91c6431facfaae3dc115feba6e0e9952c81c6e907f3bd32b3c9
7
- data.tar.gz: d728410d053304a4b6306972d63e054b1d33b45ca57ca8c9499467902c53990523164661399b1098fbd9b27d9cff1e11518250fee0d03c8bc0130bda6670eda4
6
+ metadata.gz: dd62c1917031b62e0364e381dd003a24e7836e852656f02f2d4c8b77f4804b3c283a7303b4eb16ed5f5165eef8c6fa0e717e46bc15e559885e29cb7a7bab383c
7
+ data.tar.gz: 531a661486ef2473f83730f5bf22601429fffc52e39164bc38b473984a321ad3ce294fd21d81bef2e254746d4481af6190031470e64e1d50d55c0d995de53769
@@ -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
@@ -1,7 +1,58 @@
1
+ <!-- -*- mode: markdown -*- -->
1
2
  # Keep A Changelog!
2
3
 
3
4
  See this http://keepachangelog.com link for information on how we want this documented formatted.
4
5
 
6
+ ## v2.1.0
7
+
8
+ #### Changed
9
+
10
+ * Only load the railtie if `Rails` is defined.
11
+
12
+ ## v2.0.1
13
+
14
+ #### Changed
15
+
16
+ * Remove Rails runtime dep. Only rack is needed.
17
+
18
+ ## v2.0.0
19
+
20
+ Support for new API Gateway HTTP APIs!!!
21
+
22
+ #### Changed
23
+
24
+ * The `Lamby.handler` must have a `:rack` option. One of `:http`, `:rest`, `:alb`.
25
+ * Renamed template generators to match options above.
26
+ * The `lamby:install` task now defaults to HTTP API.
27
+ * Changed the name of `:api` rack option to `:rest`.
28
+ * Removed `export` from Dotenv files. Better Docker compatability.
29
+
30
+ #### Added
31
+
32
+ * New reack handler for HTTP API v1 and v2.
33
+ * Lots of backfill tests for, ALBs & REST APIs.
34
+
35
+
36
+ ## v1.0.3
37
+
38
+ #### Changed
39
+
40
+ * Change shebangs to `#!/usr/bin/env bash`
41
+
42
+
43
+ ## v1.0.2
44
+
45
+ #### Changed
46
+
47
+ * Adds an optional 'overwrite' parameter to #to_env.
48
+
49
+ ## v1.0.1
50
+
51
+ #### Changed
52
+
53
+ * Links in bin/build templates to point to lamby.custominktech.com site.
54
+
55
+
5
56
  ## v1.0.0
6
57
 
7
58
  #### Fixed
@@ -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
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
  git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
3
  gemspec
4
+
5
+ gem 'rails'
@@ -1,141 +1,155 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lamby (1.0.0)
4
+ lamby (2.1.0)
5
5
  rack
6
- rails
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
10
9
  specs:
11
- actioncable (5.2.3)
12
- actionpack (= 5.2.3)
10
+ actioncable (6.0.2.2)
11
+ actionpack (= 6.0.2.2)
13
12
  nio4r (~> 2.0)
14
13
  websocket-driver (>= 0.6.1)
15
- actionmailer (5.2.3)
16
- actionpack (= 5.2.3)
17
- actionview (= 5.2.3)
18
- activejob (= 5.2.3)
14
+ actionmailbox (6.0.2.2)
15
+ actionpack (= 6.0.2.2)
16
+ activejob (= 6.0.2.2)
17
+ activerecord (= 6.0.2.2)
18
+ activestorage (= 6.0.2.2)
19
+ activesupport (= 6.0.2.2)
20
+ mail (>= 2.7.1)
21
+ actionmailer (6.0.2.2)
22
+ actionpack (= 6.0.2.2)
23
+ actionview (= 6.0.2.2)
24
+ activejob (= 6.0.2.2)
19
25
  mail (~> 2.5, >= 2.5.4)
20
26
  rails-dom-testing (~> 2.0)
21
- actionpack (5.2.3)
22
- actionview (= 5.2.3)
23
- activesupport (= 5.2.3)
24
- rack (~> 2.0)
27
+ actionpack (6.0.2.2)
28
+ actionview (= 6.0.2.2)
29
+ activesupport (= 6.0.2.2)
30
+ rack (~> 2.0, >= 2.0.8)
25
31
  rack-test (>= 0.6.3)
26
32
  rails-dom-testing (~> 2.0)
27
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
28
- actionview (5.2.3)
29
- activesupport (= 5.2.3)
33
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
34
+ actiontext (6.0.2.2)
35
+ actionpack (= 6.0.2.2)
36
+ activerecord (= 6.0.2.2)
37
+ activestorage (= 6.0.2.2)
38
+ activesupport (= 6.0.2.2)
39
+ nokogiri (>= 1.8.5)
40
+ actionview (6.0.2.2)
41
+ activesupport (= 6.0.2.2)
30
42
  builder (~> 3.1)
31
43
  erubi (~> 1.4)
32
44
  rails-dom-testing (~> 2.0)
33
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
34
- activejob (5.2.3)
35
- activesupport (= 5.2.3)
45
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
46
+ activejob (6.0.2.2)
47
+ activesupport (= 6.0.2.2)
36
48
  globalid (>= 0.3.6)
37
- activemodel (5.2.3)
38
- activesupport (= 5.2.3)
39
- activerecord (5.2.3)
40
- activemodel (= 5.2.3)
41
- activesupport (= 5.2.3)
42
- arel (>= 9.0)
43
- activestorage (5.2.3)
44
- actionpack (= 5.2.3)
45
- activerecord (= 5.2.3)
49
+ activemodel (6.0.2.2)
50
+ activesupport (= 6.0.2.2)
51
+ activerecord (6.0.2.2)
52
+ activemodel (= 6.0.2.2)
53
+ activesupport (= 6.0.2.2)
54
+ activestorage (6.0.2.2)
55
+ actionpack (= 6.0.2.2)
56
+ activejob (= 6.0.2.2)
57
+ activerecord (= 6.0.2.2)
46
58
  marcel (~> 0.3.1)
47
- activesupport (5.2.3)
59
+ activesupport (6.0.2.2)
48
60
  concurrent-ruby (~> 1.0, >= 1.0.2)
49
61
  i18n (>= 0.7, < 2)
50
62
  minitest (~> 5.1)
51
63
  tzinfo (~> 1.1)
52
- arel (9.0.0)
53
- aws-eventstream (1.0.2)
54
- aws-partitions (1.146.0)
55
- aws-sdk-core (3.48.2)
64
+ zeitwerk (~> 2.2)
65
+ aws-eventstream (1.0.3)
66
+ aws-partitions (1.287.0)
67
+ aws-sdk-core (3.92.0)
56
68
  aws-eventstream (~> 1.0, >= 1.0.2)
57
- aws-partitions (~> 1.0)
69
+ aws-partitions (~> 1, >= 1.239.0)
58
70
  aws-sigv4 (~> 1.1)
59
71
  jmespath (~> 1.0)
60
- aws-sdk-ssm (1.41.0)
61
- aws-sdk-core (~> 3, >= 3.48.2)
72
+ aws-sdk-ssm (1.73.0)
73
+ aws-sdk-core (~> 3, >= 3.71.0)
62
74
  aws-sigv4 (~> 1.1)
63
- aws-sigv4 (1.1.0)
75
+ aws-sigv4 (1.1.1)
64
76
  aws-eventstream (~> 1.0, >= 1.0.2)
65
- builder (3.2.3)
77
+ builder (3.2.4)
66
78
  coderay (1.1.2)
67
- concurrent-ruby (1.1.5)
68
- crass (1.0.4)
69
- erubi (1.8.0)
79
+ concurrent-ruby (1.1.6)
80
+ crass (1.0.6)
81
+ erubi (1.9.0)
70
82
  globalid (0.4.2)
71
83
  activesupport (>= 4.2.0)
72
- i18n (1.6.0)
84
+ i18n (1.8.2)
73
85
  concurrent-ruby (~> 1.0)
74
86
  jmespath (1.4.0)
75
- loofah (2.2.3)
87
+ loofah (2.4.0)
76
88
  crass (~> 1.0.2)
77
89
  nokogiri (>= 1.5.9)
78
90
  mail (2.7.1)
79
91
  mini_mime (>= 0.1.1)
80
92
  marcel (0.3.3)
81
93
  mimemagic (~> 0.3.2)
82
- metaclass (0.0.4)
83
- method_source (0.9.2)
84
- mimemagic (0.3.3)
85
- mini_mime (1.0.1)
94
+ method_source (1.0.0)
95
+ mimemagic (0.3.4)
96
+ mini_mime (1.0.2)
86
97
  mini_portile2 (2.4.0)
87
- minitest (5.11.3)
88
- mocha (1.8.0)
89
- metaclass (~> 0.0.1)
90
- nio4r (2.4.0)
91
- nokogiri (1.10.3)
98
+ minitest (5.14.0)
99
+ minitest-focus (1.1.2)
100
+ minitest (>= 4, < 6)
101
+ mocha (1.11.2)
102
+ nio4r (2.5.2)
103
+ nokogiri (1.10.9)
92
104
  mini_portile2 (~> 2.4.0)
93
- pry (0.12.2)
94
- coderay (~> 1.1.0)
95
- method_source (~> 0.9.0)
96
- rack (2.0.7)
105
+ pry (0.13.0)
106
+ coderay (~> 1.1)
107
+ method_source (~> 1.0)
108
+ rack (2.2.2)
97
109
  rack-test (1.1.0)
98
110
  rack (>= 1.0, < 3)
99
- rails (5.2.3)
100
- actioncable (= 5.2.3)
101
- actionmailer (= 5.2.3)
102
- actionpack (= 5.2.3)
103
- actionview (= 5.2.3)
104
- activejob (= 5.2.3)
105
- activemodel (= 5.2.3)
106
- activerecord (= 5.2.3)
107
- activestorage (= 5.2.3)
108
- activesupport (= 5.2.3)
111
+ rails (6.0.2.2)
112
+ actioncable (= 6.0.2.2)
113
+ actionmailbox (= 6.0.2.2)
114
+ actionmailer (= 6.0.2.2)
115
+ actionpack (= 6.0.2.2)
116
+ actiontext (= 6.0.2.2)
117
+ actionview (= 6.0.2.2)
118
+ activejob (= 6.0.2.2)
119
+ activemodel (= 6.0.2.2)
120
+ activerecord (= 6.0.2.2)
121
+ activestorage (= 6.0.2.2)
122
+ activesupport (= 6.0.2.2)
109
123
  bundler (>= 1.3.0)
110
- railties (= 5.2.3)
124
+ railties (= 6.0.2.2)
111
125
  sprockets-rails (>= 2.0.0)
112
126
  rails-dom-testing (2.0.3)
113
127
  activesupport (>= 4.2.0)
114
128
  nokogiri (>= 1.6)
115
- rails-html-sanitizer (1.0.4)
116
- loofah (~> 2.2, >= 2.2.2)
117
- railties (5.2.3)
118
- actionpack (= 5.2.3)
119
- activesupport (= 5.2.3)
129
+ rails-html-sanitizer (1.3.0)
130
+ loofah (~> 2.3)
131
+ railties (6.0.2.2)
132
+ actionpack (= 6.0.2.2)
133
+ activesupport (= 6.0.2.2)
120
134
  method_source
121
135
  rake (>= 0.8.7)
122
- thor (>= 0.19.0, < 2.0)
123
- rake (12.3.2)
124
- sprockets (3.7.2)
136
+ thor (>= 0.20.3, < 2.0)
137
+ rake (13.0.1)
138
+ sprockets (4.0.0)
125
139
  concurrent-ruby (~> 1.0)
126
140
  rack (> 1, < 3)
127
141
  sprockets-rails (3.2.1)
128
142
  actionpack (>= 4.0)
129
143
  activesupport (>= 4.0)
130
144
  sprockets (>= 3.0.0)
131
- sqlite3 (1.4.1)
132
- thor (0.20.3)
145
+ thor (1.0.1)
133
146
  thread_safe (0.3.6)
134
- tzinfo (1.2.5)
147
+ tzinfo (1.2.6)
135
148
  thread_safe (~> 0.1)
136
149
  websocket-driver (0.7.1)
137
150
  websocket-extensions (>= 0.1.0)
138
151
  websocket-extensions (0.1.4)
152
+ zeitwerk (2.3.0)
139
153
 
140
154
  PLATFORMS
141
155
  ruby
@@ -145,10 +159,11 @@ DEPENDENCIES
145
159
  bundler
146
160
  lamby!
147
161
  minitest
162
+ minitest-focus
148
163
  mocha
149
164
  pry
165
+ rails
150
166
  rake
151
- sqlite3
152
167
 
153
168
  BUNDLED WITH
154
- 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
 
@@ -7,11 +7,11 @@
7
7
 
8
8
  <p>&nbsp;</p>
9
9
 
10
- The goal of this project is to provide minimal code to allow your Rails application to respond to incoming [AWS Lambda Function Handler in Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-handler.html) `event` and `context` objects in the Lambda handler. We support integration with API Gateway and are currently working on Application Load Balancer support.
10
+ The goal of this project is to provide minimal code to allow your Rails application to respond to incoming [AWS Lambda Function Handler in Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-handler.html) `event` and `context` objects in the Lambda handler. We support Application Load Balancer integration or API Gateway.
11
11
 
12
12
  ```ruby
13
13
  def handler(event:, context:)
14
- Lamby.handler $app, event, context
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. **NOTE: There are no tests now but adding them is on our TODO list.**
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