lamby 1.0.1 → 2.2.0

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.
Files changed (52) 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 +58 -0
  6. data/Dockerfile +12 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +94 -79
  9. data/README.md +9 -3
  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 -4
  20. data/lib/lamby/debug.rb +8 -1
  21. data/lib/lamby/handler.rb +16 -3
  22. data/lib/lamby/logger.rb +13 -9
  23. data/lib/lamby/rack.rb +21 -9
  24. data/lib/lamby/rack_alb.rb +12 -15
  25. data/lib/lamby/rack_http.rb +84 -0
  26. data/lib/lamby/{rack_api.rb → rack_rest.rb} +7 -3
  27. data/lib/lamby/ssm_parameter_store.rb +9 -8
  28. data/lib/lamby/templates.rake +4 -3
  29. data/lib/lamby/templates/{application_load_balancer.rb → alb.rb} +2 -2
  30. data/lib/lamby/templates/{application_load_balancer → alb}/app.rb +0 -0
  31. data/lib/lamby/templates/{application_load_balancer → alb}/build +1 -1
  32. data/lib/lamby/templates/{application_load_balancer → alb}/deploy +1 -1
  33. data/lib/lamby/templates/{application_load_balancer → alb}/template.yaml +1 -1
  34. data/lib/lamby/templates/{api_gateway.rb → http.rb} +3 -3
  35. data/lib/lamby/templates/{api_gateway → http}/app.rb +1 -1
  36. data/lib/lamby/templates/{api_gateway → http}/build +1 -1
  37. data/lib/lamby/templates/{api_gateway → http}/deploy +1 -1
  38. data/lib/lamby/templates/http/template.yaml +48 -0
  39. data/lib/lamby/templates/rest.rb +25 -0
  40. data/lib/lamby/templates/rest/app.rb +10 -0
  41. data/lib/lamby/templates/rest/build +23 -0
  42. data/lib/lamby/templates/rest/deploy +22 -0
  43. data/lib/lamby/templates/{api_gateway → rest}/template.yaml +2 -2
  44. data/lib/lamby/templates/shared.rb +3 -1
  45. data/lib/lamby/version.rb +1 -1
  46. data/vendor/.keep +0 -0
  47. metadata +29 -37
  48. data/.python-version +0 -1
  49. data/.travis.yml +0 -17
  50. data/Brewfile +0 -5
  51. data/Pipfile +0 -13
  52. data/Pipfile.lock +0 -370
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42eaa9265259f89cfbcf792a1f1dbbc67e6befc3b3bcd6747c5000936b40f711
4
- data.tar.gz: 44842e88d73023f22850a2642bf81c3b14c67f02c0adb7dd82cca615bdac1b77
3
+ metadata.gz: 9c79ddbdbe89366400b406896007cc36bac36cbe640d8485b3c33f87aaddb169
4
+ data.tar.gz: b1be59cec48ed5ce9c32b4f6275230b4cb266f1d35119706e50c93f520c58b79
5
5
  SHA512:
6
- metadata.gz: 51cabbe71d2c26f8e24c00294f4e7f82fae13abcc1df18775968dc3312e80c9d45ec67937ca32ec77c42950e856adfbab505898ab42db185a09956fb5855186a
7
- data.tar.gz: 46cd1ce67df3f2e05825f26642932ff91b90678492a14ed37045c216d4e0768f5e75d03c0f221527ffd5bbfe39e27d977e7db906e4dc30d945ea8a7522a2da48
6
+ metadata.gz: ccf32a0550fa045d46af392932b57b5e3bb1e51155f6641225f06bbd89e2252635affb5733a51d753a18cd215cb0ade070d96c47c694f42eb864f9b30a597005
7
+ data.tar.gz: 796122743e00d8322364c58e34555ba4355698965aa452b389c707440d86777f2a508cb4325120b0e35105570a3b24c4b7993d28cfdc22f9c9f8e69773341ae4
@@ -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,65 @@
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.2.0
7
+
8
+ #### Changed
9
+
10
+ * Remove dependency on `activesupport` for rack-only applications.
11
+ * Remove ActiveSupport artifacts:
12
+ - Replace `strip_heredoc` with `<<~HEREDOC`.
13
+ - Remove instances of `Object#try`, replace with `&.`.
14
+ - Use `Rack::Utils.build_nested_query` in place of `Object#to_query`.
15
+ - Replace `Object#present?` with `to_s.empty?`.
16
+ - Replace `Array.wrap` with `Array[obj].compact.flatten`.
17
+ * Add a check against the `RAILS_ENV` AND `RACK_ENV` environment
18
+ variables prior to enabling debug mode.
19
+
20
+ ## v2.1.0
21
+
22
+ #### Changed
23
+
24
+ * Only load the railtie if `Rails` is defined.
25
+
26
+ ## v2.0.1
27
+
28
+ #### Changed
29
+
30
+ * Remove Rails runtime dep. Only rack is needed.
31
+
32
+ ## v2.0.0
33
+
34
+ Support for new API Gateway HTTP APIs!!!
35
+
36
+ #### Changed
37
+
38
+ * The `Lamby.handler` must have a `:rack` option. One of `:http`, `:rest`, `:alb`.
39
+ * Renamed template generators to match options above.
40
+ * The `lamby:install` task now defaults to HTTP API.
41
+ * Changed the name of `:api` rack option to `:rest`.
42
+ * Removed `export` from Dotenv files. Better Docker compatability.
43
+
44
+ #### Added
45
+
46
+ * New rack handler for HTTP API v1 and v2.
47
+ * Lots of backfill tests for, ALBs & REST APIs.
48
+
49
+
50
+ ## v1.0.3
51
+
52
+ #### Changed
53
+
54
+ * Change shebangs to `#!/usr/bin/env bash`
55
+
56
+
57
+ ## v1.0.2
58
+
59
+ #### Changed
60
+
61
+ * Adds an optional 'overwrite' parameter to #to_env.
62
+
5
63
  ## v1.0.1
6
64
 
7
65
  #### 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
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.2.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
 
@@ -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