jets 0.2.0 → 0.5.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.
- checksums.yaml +5 -5
- data/.circleci/bin/commit_docs.sh +26 -0
- data/.circleci/config.yml +126 -0
- data/.codebuild/README.md +57 -0
- data/.codebuild/bin/jets +3 -0
- data/.codebuild/buildspec-base.yml +14 -0
- data/.codebuild/integration.sh +54 -0
- data/.codebuild/jets.postman_collection.json +323 -0
- data/.codebuild/scripts/install-docker.sh +12 -0
- data/.codebuild/scripts/install-dynamodb-local.sh +22 -0
- data/.codebuild/scripts/install-java.sh +20 -0
- data/.codebuild/scripts/install-node.sh +4 -0
- data/.gitignore +3 -0
- data/.gitmodules +9 -0
- data/.python-version +1 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +3 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +8 -1
- data/Gemfile.lock +132 -28
- data/LICENSE.txt +1 -1
- data/Procfile +2 -0
- data/README.md +116 -17
- data/Rakefile +6 -0
- data/buildspec.yml +18 -0
- data/exe/jets +14 -0
- data/jets.gemspec +31 -3
- data/lib/jets.rb +56 -8
- data/lib/jets/application.rb +121 -0
- data/lib/jets/application/middleware.rb +23 -0
- data/lib/jets/aws_services.rb +71 -0
- data/lib/jets/booter.rb +95 -0
- data/lib/jets/builders.rb +6 -0
- data/lib/jets/builders/code_builder.rb +431 -0
- data/lib/jets/builders/deducer.rb +73 -0
- data/lib/jets/builders/gem_replacer.rb +154 -0
- data/lib/jets/builders/handler_generator.rb +76 -0
- data/lib/jets/builders/node-hello.js +73 -0
- data/lib/jets/builders/node-shim.js +151 -0
- data/lib/jets/cfn.rb +5 -4
- data/lib/jets/cfn/ship.rb +178 -0
- data/lib/jets/cfn/status.rb +208 -0
- data/lib/jets/cfn/template_builders.rb +21 -0
- data/lib/jets/cfn/template_builders/api_gateway_builder.rb +73 -0
- data/lib/jets/cfn/template_builders/api_gateway_deployment_builder.rb +38 -0
- data/lib/jets/cfn/template_builders/base_child_builder.rb +38 -0
- data/lib/jets/cfn/template_builders/controller_builder.rb +107 -0
- data/lib/jets/cfn/template_builders/function_builder.rb +20 -0
- data/lib/jets/cfn/template_builders/function_properties.rb +6 -0
- data/lib/jets/cfn/template_builders/function_properties/base_builder.rb +106 -0
- data/lib/jets/cfn/template_builders/function_properties/node_builder.rb +12 -0
- data/lib/jets/cfn/template_builders/function_properties/python_builder.rb +12 -0
- data/lib/jets/cfn/template_builders/function_properties/ruby_builder.rb +13 -0
- data/lib/jets/cfn/template_builders/interface.rb +91 -0
- data/lib/jets/cfn/template_builders/job_builder.rb +63 -0
- data/lib/jets/cfn/template_builders/parent_builder.rb +97 -0
- data/lib/jets/cfn/template_builders/rule_builder.rb +55 -0
- data/lib/jets/cfn/template_builders/templates/minimal-stack.yml +45 -0
- data/lib/jets/cfn/template_mappers.rb +23 -0
- data/lib/jets/cfn/template_mappers/api_gateway_deployment_mapper.rb +48 -0
- data/lib/jets/cfn/template_mappers/api_gateway_mapper.rb +4 -0
- data/lib/jets/cfn/template_mappers/child_mapper.rb +41 -0
- data/lib/jets/cfn/template_mappers/config_rule_mapper.rb +34 -0
- data/lib/jets/cfn/template_mappers/controller_mapper.rb +36 -0
- data/lib/jets/cfn/template_mappers/events_rule_mapper.rb +40 -0
- data/lib/jets/cfn/template_mappers/function_mapper.rb +4 -0
- data/lib/jets/cfn/template_mappers/gateway_method_mapper.rb +56 -0
- data/lib/jets/cfn/template_mappers/gateway_resource_mapper.rb +62 -0
- data/lib/jets/cfn/template_mappers/job_mapper.rb +4 -0
- data/lib/jets/cfn/template_mappers/lambda_function_mapper.rb +50 -0
- data/lib/jets/cfn/template_mappers/rule_mapper.rb +5 -0
- data/lib/jets/cli.rb +180 -15
- data/lib/jets/commands.rb +22 -0
- data/lib/jets/commands/base.rb +151 -0
- data/lib/jets/commands/build.rb +186 -0
- data/lib/jets/commands/call.rb +175 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +112 -0
- data/lib/jets/commands/call/base_guesser.rb +33 -0
- data/lib/jets/commands/call/guesser.rb +51 -0
- data/lib/jets/commands/console.rb +12 -0
- data/lib/jets/commands/db.rb +15 -0
- data/lib/jets/commands/db/environment-task.rake +3 -0
- data/lib/jets/commands/db/tasks.rb +30 -0
- data/lib/jets/commands/dbconsole.rb +131 -0
- data/lib/jets/commands/delete.rb +119 -0
- data/lib/jets/commands/deploy.rb +53 -0
- data/lib/jets/commands/dynamodb.rb +22 -0
- data/lib/jets/commands/dynamodb/migrate.rb +9 -0
- data/lib/jets/commands/dynamodb/migrator.rb +36 -0
- data/lib/jets/commands/help.rb +9 -0
- data/lib/jets/commands/help/build.md +1 -0
- data/lib/jets/commands/help/call.md +55 -0
- data/lib/jets/commands/help/console.md +4 -0
- data/lib/jets/commands/help/db/generate.md +8 -0
- data/lib/jets/commands/help/dbconsole.md +5 -0
- data/lib/jets/commands/help/delete.md +9 -0
- data/lib/jets/commands/help/deploy.md +5 -0
- data/lib/jets/commands/help/dynamodb/generate.md +50 -0
- data/lib/jets/commands/help/dynamodb/migrate.md +4 -0
- data/lib/jets/commands/help/generate.md +5 -0
- data/lib/jets/commands/help/new.md +9 -0
- data/lib/jets/commands/help/process/controller.md +6 -0
- data/lib/jets/commands/help/process/function.md +5 -0
- data/lib/jets/commands/help/process/job.md +5 -0
- data/lib/jets/commands/help/process/rule.md +5 -0
- data/lib/jets/commands/help/routes.md +3 -0
- data/lib/jets/commands/help/server.md +6 -0
- data/lib/jets/commands/help/status.md +1 -0
- data/lib/jets/commands/help/url.md +5 -0
- data/lib/jets/commands/main.rb +111 -0
- data/lib/jets/commands/markdown.rb +8 -0
- data/lib/jets/commands/markdown/creator.rb +58 -0
- data/lib/jets/commands/markdown/index.rb +27 -0
- data/lib/jets/commands/markdown/page.rb +125 -0
- data/lib/jets/commands/markdown/shell.rb +11 -0
- data/lib/jets/commands/new.rb +110 -0
- data/lib/jets/commands/rake_command.rb +61 -0
- data/lib/jets/commands/rake_tasks.rb +45 -0
- data/lib/jets/commands/sequence.rb +44 -0
- data/lib/jets/commands/stack_info.rb +30 -0
- data/lib/jets/commands/templates/skeleton/.env +2 -0
- data/lib/jets/commands/templates/skeleton/.env.development.tt +3 -0
- data/lib/jets/commands/templates/skeleton/.env.test +3 -0
- data/lib/jets/commands/templates/skeleton/.gitignore +14 -0
- data/lib/jets/commands/templates/skeleton/.jetskeep +1 -0
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +27 -0
- data/lib/jets/commands/templates/skeleton/Procfile +7 -0
- data/lib/jets/commands/templates/skeleton/README.md +4 -0
- data/lib/jets/commands/templates/skeleton/Rakefile +2 -0
- data/lib/jets/commands/templates/skeleton/app/controllers/application_controller.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/helpers/application_helper.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_record.rb +3 -0
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +24 -0
- data/lib/jets/commands/templates/skeleton/bin/ruby_server +18 -0
- data/lib/jets/commands/templates/skeleton/bin/ruby_server.rb +2 -0
- data/lib/jets/commands/templates/skeleton/config.ru +4 -0
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +26 -0
- data/lib/jets/commands/templates/skeleton/config/database.yml.tt +27 -0
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +25 -0
- data/lib/jets/commands/templates/skeleton/config/routes.rb +8 -0
- data/lib/jets/commands/templates/skeleton/db/.gitkeep +0 -0
- data/lib/jets/commands/templates/skeleton/public/404.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/422.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/500.html +66 -0
- data/lib/jets/commands/templates/skeleton/public/favicon.ico +0 -0
- data/lib/jets/commands/templates/skeleton/public/index.html.tt +79 -0
- data/lib/jets/commands/templates/skeleton/spec/controllers/posts_controller_spec.rb +18 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-index.json +51 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-show.json +53 -0
- data/lib/jets/commands/templates/skeleton/spec/spec_helper.rb.tt +27 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +14 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +24 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/src/jets/crud.js +87 -0
- data/lib/jets/commands/url.rb +45 -0
- data/lib/jets/commands/webpacker_template.rb +19 -0
- data/lib/jets/controller.rb +9 -0
- data/lib/jets/controller/base.rb +50 -0
- data/lib/jets/controller/callbacks.rb +43 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/params.rb +53 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/renderers.rb +5 -0
- data/lib/jets/controller/renderers/aws_proxy_renderer.rb +69 -0
- data/lib/jets/controller/renderers/base_renderer.rb +16 -0
- data/lib/jets/controller/renderers/template_renderer.rb +107 -0
- data/lib/jets/controller/rendering.rb +80 -0
- data/lib/jets/controller/request.rb +55 -0
- data/lib/jets/core.rb +81 -0
- data/lib/jets/default/application.rb +20 -0
- data/lib/jets/dotenv.rb +37 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +40 -0
- data/lib/jets/generator/templates/erb/controller/view.html.erb +2 -0
- data/lib/jets/generator/templates/erb/scaffold/_form.html.erb +39 -0
- data/lib/jets/generator/templates/erb/scaffold/edit.html.erb +6 -0
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +29 -0
- data/lib/jets/generator/templates/erb/scaffold/new.html.erb +5 -0
- data/lib/jets/generator/templates/erb/scaffold/show.html.erb +9 -0
- data/lib/jets/generator/templates/rails/assets/javascript.js +2 -0
- data/lib/jets/generator/templates/rails/assets/stylesheet.css +4 -0
- data/lib/jets/generator/templates/rails/controller/controller.rb +13 -0
- data/lib/jets/generator/templates/rails/helper/helper.rb +4 -0
- data/lib/jets/generator/templates/rails/scaffold/scaffold.css +80 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb +62 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +71 -0
- data/lib/jets/internal/app/controllers/jets/public_controller.rb +30 -0
- data/lib/jets/internal/app/controllers/jets/public_controller/python/show.py +47 -0
- data/lib/jets/internal/app/controllers/jets/public_controller/python/show.pyc +0 -0
- data/lib/jets/internal/app/controllers/jets/welcome_controller.rb +22 -0
- data/lib/jets/internal/app/controllers/jets/welcome_controller/python/index.py +24 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +52 -0
- data/lib/jets/job.rb +5 -0
- data/lib/jets/job/base.rb +29 -0
- data/lib/jets/job/dsl.rb +58 -0
- data/lib/jets/job/task.rb +17 -0
- data/lib/jets/klass.rb +71 -0
- data/lib/jets/lambda.rb +18 -0
- data/lib/jets/lambda/dsl.rb +153 -0
- data/lib/jets/lambda/function.rb +29 -0
- data/lib/jets/lambda/function_constructor.rb +60 -0
- data/lib/jets/lambda/functions.rb +22 -0
- data/lib/jets/lambda/task.rb +77 -0
- data/lib/jets/naming.rb +61 -0
- data/lib/jets/pascalize.rb +30 -0
- data/lib/jets/poly_fun.rb +61 -0
- data/lib/jets/poly_fun/base_executor.rb +129 -0
- data/lib/jets/poly_fun/lambda_executor.rb +16 -0
- data/lib/jets/poly_fun/node_error.rb +8 -0
- data/lib/jets/poly_fun/node_executor.rb +54 -0
- data/lib/jets/poly_fun/python_error.rb +8 -0
- data/lib/jets/poly_fun/python_executor.rb +23 -0
- data/lib/jets/preheat.rb +72 -0
- data/lib/jets/processors.rb +4 -0
- data/lib/jets/processors/deducer.rb +54 -0
- data/lib/jets/processors/main_processor.rb +57 -0
- data/lib/jets/rails_overrides.rb +4 -0
- data/lib/jets/rails_overrides/asset_tag_helper.rb +41 -0
- data/lib/jets/rails_overrides/common_methods.rb +13 -0
- data/lib/jets/rails_overrides/rendering_helper.rb +26 -0
- data/lib/jets/rails_overrides/url_helper.rb +26 -0
- data/lib/jets/route.rb +145 -0
- data/lib/jets/router.rb +115 -0
- data/lib/jets/ruby_server.rb +91 -0
- data/lib/jets/rule.rb +5 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +64 -0
- data/lib/jets/rule/task.rb +44 -0
- data/lib/jets/server.rb +16 -0
- data/lib/jets/server/api_gateway.rb +39 -0
- data/lib/jets/server/lambda_aws_proxy.rb +122 -0
- data/lib/jets/server/route_matcher.rb +96 -0
- data/lib/jets/server/timing_middleware.rb +16 -0
- data/lib/jets/server/webpacker_setup.rb +7 -0
- data/lib/jets/timing.rb +65 -0
- data/lib/jets/timing/report.rb +82 -0
- data/lib/jets/util.rb +7 -12
- data/lib/jets/version.rb +1 -1
- data/support/clean +3 -0
- data/support/console +3 -0
- metadata +473 -76
- data/bin/jets +0 -14
- data/lib/jets/base_controller.rb +0 -54
- data/lib/jets/build.rb +0 -46
- data/lib/jets/build/handler_generator.rb +0 -46
- data/lib/jets/build/lambda_deducer.rb +0 -23
- data/lib/jets/build/templates/handler.js +0 -149
- data/lib/jets/build/traveling_ruby.rb +0 -133
- data/lib/jets/cfn/base.rb +0 -17
- data/lib/jets/cfn/builder.rb +0 -53
- data/lib/jets/cfn/namer.rb +0 -30
- data/lib/jets/cli/help.rb +0 -19
- data/lib/jets/command.rb +0 -25
- data/lib/jets/process.rb +0 -18
- data/lib/jets/process/base_processor.rb +0 -23
- data/lib/jets/process/controller_processor.rb +0 -36
- data/lib/jets/process/help.rb +0 -11
- data/lib/jets/process/processor_deducer.rb +0 -51
- data/lib/jets/project.rb +0 -23
- data/notes/design.md +0 -107
- data/notes/faq.md +0 -3
- data/notes/lambda_ruby_info.md +0 -34
- data/notes/traveling-ruby-packaging-jets.md +0 -26
- data/notes/traveling-ruby-packaging.md +0 -103
- data/notes/traveling-ruby-structure.md +0 -6
- data/notes/traveling-ruby.md +0 -82
- data/spec/fixtures/classes.rb +0 -5
- data/spec/fixtures/project/.gitignore +0 -3
- data/spec/fixtures/project/.ruby-version +0 -1
- data/spec/fixtures/project/Gemfile +0 -4
- data/spec/fixtures/project/Gemfile.lock +0 -23
- data/spec/fixtures/project/app/controllers/application_controller.rb +0 -2
- data/spec/fixtures/project/app/controllers/posts_controller.rb +0 -12
- data/spec/fixtures/project/bin/jets +0 -22
- data/spec/fixtures/project/config/routes.rb +0 -6
- data/spec/fixtures/project/handlers/controllers/posts.js +0 -212
- data/spec/lib/cli_spec.rb +0 -20
- data/spec/lib/jets/base_controller_spec.rb +0 -18
- data/spec/lib/jets/build/handler_generator_spec.rb +0 -20
- data/spec/lib/jets/build/lambda_deducer_spec.rb +0 -15
- data/spec/lib/jets/build_spec.rb +0 -34
- data/spec/lib/jets/cfn/builder_spec.rb +0 -18
- data/spec/lib/jets/cfn/namer_spec.rb +0 -16
- data/spec/lib/jets/process/controller_processor_spec.rb +0 -22
- data/spec/lib/jets/process/infer_spec.rb +0 -24
- data/spec/lib/jets/process_spec.rb +0 -18
- data/spec/lib/jets/project_spec.rb +0 -14
- data/spec/spec_helper.rb +0 -28
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/bin/bash -eux
|
|
2
|
+
|
|
3
|
+
# docker client
|
|
4
|
+
# https://docs.docker.com/install/linux/docker-ce/debian/#install-using-the-convenience-script
|
|
5
|
+
# Install docker client because we're going to use docker to
|
|
6
|
+
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
|
|
7
|
+
|
|
8
|
+
# docker-compose
|
|
9
|
+
# to find latest releases:
|
|
10
|
+
# https://github.com/docker/compose/releases
|
|
11
|
+
curl -s -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
|
|
12
|
+
chmod +x /usr/local/bin/docker-compose
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/bin/bash -eux
|
|
2
|
+
|
|
3
|
+
mkdir -p /usr/local/dynamodb_local
|
|
4
|
+
curl -s https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz -o /usr/local/dynamodb_local/dynamodb_local_latest.tar.gz
|
|
5
|
+
cd /usr/local/dynamodb_local
|
|
6
|
+
tar zxf dynamodb_local_latest.tar.gz
|
|
7
|
+
|
|
8
|
+
cat > /usr/local/bin/dynamodb-local <<EOL
|
|
9
|
+
#!/bin/bash
|
|
10
|
+
|
|
11
|
+
# for dynamodb-local and dynamodb-admin
|
|
12
|
+
# More details: https://github.com/tongueroo/jets/wiki/Dynamodb-Local-Setup-Walkthrough
|
|
13
|
+
export AWS_SECRET_ACCESS_KEY=fakekey
|
|
14
|
+
export AWS_ACCESS_KEY_ID=fakeid
|
|
15
|
+
|
|
16
|
+
# Based on: https://github.com/Homebrew/homebrew-cask/blob/master/Casks/dynamodb-local.rb
|
|
17
|
+
# I manually extracted out the dynamodb local tar to /opt/dynamodb_local
|
|
18
|
+
cd /usr/local/dynamodb_local
|
|
19
|
+
|
|
20
|
+
exec java -Djava.library.path='./DynamoDBLocal_lib' -jar 'DynamoDBLocal.jar' "$@" 2>&1 &
|
|
21
|
+
EOL
|
|
22
|
+
chmod a+x /usr/local/bin/dynamodb-local
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/bin/bash -exu
|
|
2
|
+
|
|
3
|
+
# https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-debian-8
|
|
4
|
+
apt-get update
|
|
5
|
+
apt-get install default-jre -y
|
|
6
|
+
|
|
7
|
+
# to make java 1.8 by default if you keep java-1.7.0. We dont need to do this:
|
|
8
|
+
# update-alternatives --config java #pick java 1.8
|
|
9
|
+
# update-alternatives --config javac #pick java 1.8
|
|
10
|
+
|
|
11
|
+
# to show java_home
|
|
12
|
+
java -XshowSettings:properties -version
|
|
13
|
+
|
|
14
|
+
###
|
|
15
|
+
# maven install: https://maven.apache.org/install.html
|
|
16
|
+
wget http://mirror.cogentco.com/pub/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
|
|
17
|
+
tar zxf apache-maven-3.5.3-bin.tar.gz
|
|
18
|
+
mkdir -p /opt
|
|
19
|
+
mv apache-maven-3.5.3 /opt/maven
|
|
20
|
+
ln -s /opt/maven/bin/mvn /usr/local/bin/mvn
|
data/.gitignore
CHANGED
data/.gitmodules
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[submodule "spec/fixtures/apps/demo"]
|
|
2
|
+
path = spec/fixtures/apps/demo
|
|
3
|
+
url = https://github.com/tongueroo/demo.git
|
|
4
|
+
[submodule "vendor/lambdagem"]
|
|
5
|
+
path = vendor/lambdagem
|
|
6
|
+
url = https://github.com/tongueroo/lambdagem.git
|
|
7
|
+
[submodule "vendor/dynomite"]
|
|
8
|
+
path = vendor/dynomite
|
|
9
|
+
url = https://github.com/tongueroo/dynomite.git
|
data/.python-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.6.6
|
data/.rspec
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.5.1
|
data/CHANGELOG.md
CHANGED
data/Dockerfile
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
FROM tongueroo/jets:base
|
|
2
|
+
MAINTAINER Tung Nguyen <tongueroo@gmail.com>
|
|
3
|
+
|
|
4
|
+
# Install bundle of gems first in a layer
|
|
5
|
+
# so if the Gemfile doesnt chagne it wont have to install gems again
|
|
6
|
+
WORKDIR /tmp
|
|
7
|
+
COPY Gemfile* /tmp/
|
|
8
|
+
RUN bundle install && rm -rf /root/.bundle/cache
|
|
9
|
+
|
|
10
|
+
# Add the Rails app
|
|
11
|
+
ENV HOME /root
|
|
12
|
+
WORKDIR /app
|
|
13
|
+
COPY . /app
|
|
14
|
+
RUN bundle install
|
|
15
|
+
|
|
16
|
+
CMD ["uptime"]
|
data/Dockerfile.base
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
FROM ruby:2.5.1
|
|
2
|
+
MAINTAINER Tung Nguyen <tongueroo@gmail.com>
|
|
3
|
+
|
|
4
|
+
RUN apt-get update && \
|
|
5
|
+
apt-get install -y net-tools netcat && \
|
|
6
|
+
rm -rf /var/lib/apt/lists/* && apt-get clean && apt-get purge
|
|
7
|
+
|
|
8
|
+
# Packages
|
|
9
|
+
# capybara-webkit: libqt4-dev libqtwebkit-dev
|
|
10
|
+
RUN apt-get update && \
|
|
11
|
+
apt-get install -y software-properties-common && \
|
|
12
|
+
add-apt-repository ppa:git-core/ppa -y && \
|
|
13
|
+
apt-get update && \
|
|
14
|
+
apt-get install -y \
|
|
15
|
+
build-essential \
|
|
16
|
+
libqt4-dev libqtwebkit-dev \
|
|
17
|
+
nodejs \
|
|
18
|
+
telnet \
|
|
19
|
+
curl \
|
|
20
|
+
vim \
|
|
21
|
+
htop \
|
|
22
|
+
mysql-client \
|
|
23
|
+
lsof && \
|
|
24
|
+
rm -rf /var/lib/apt/lists/* && apt-get clean && apt-get purge
|
|
25
|
+
|
|
26
|
+
# ssh key for bundle to access gems that are in private repos
|
|
27
|
+
# COPY config/ssh /root/.ssh
|
|
28
|
+
# RUN chmod 600 /root/.ssh/id_rsa-boltops-docker
|
|
29
|
+
|
|
30
|
+
# Install bundle of gems
|
|
31
|
+
RUN gem install bundler
|
|
32
|
+
WORKDIR /tmp
|
|
33
|
+
COPY lib/jets/version.rb /tmp/lib/jets/version.rb
|
|
34
|
+
COPY jets.gemspec /tmp/
|
|
35
|
+
COPY Gemfile* /tmp/
|
|
36
|
+
RUN bundle install --jobs=4 --retry=3 && rm -rf /root/.bundle/cache
|
|
37
|
+
|
|
38
|
+
# Do not try to precompile assets here because it could resurrect files
|
|
39
|
+
# This happened with config/initializers/rollbar.rb.
|
|
40
|
+
|
|
41
|
+
# Add development like customizations
|
|
42
|
+
# COPY config/home/irbrc /root/.irbrc
|
|
43
|
+
ENV TERM xterm
|
|
44
|
+
|
|
45
|
+
COPY .codebuild/scripts /tmp/scripts
|
|
46
|
+
RUN bash -eux /tmp/scripts/install-docker.sh
|
|
47
|
+
RUN bash -exu /tmp/scripts/install-java.sh
|
|
48
|
+
RUN bash -exu /tmp/scripts/install-dynamodb-local.sh
|
|
49
|
+
RUN bash -exu /tmp/scripts/install-node.sh
|
|
50
|
+
|
|
51
|
+
RUN apt-get install -y zip
|
|
52
|
+
|
|
53
|
+
CMD ["/bin/bash"]
|
data/Gemfile
CHANGED
|
@@ -3,4 +3,11 @@ source "https://rubygems.org"
|
|
|
3
3
|
# Specify your gem dependencies in jets.gemspec
|
|
4
4
|
gemspec
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
# required here for specs
|
|
7
|
+
# TODO: Would like to only required this in the project's Gemfile
|
|
8
|
+
# right now need both because of jets/application.rb and
|
|
9
|
+
# jets/webpacker/middleware_setup.rb
|
|
10
|
+
group :development, :test do
|
|
11
|
+
gem "webpacker", git: "https://github.com/tongueroo/webpacker.git", branch: "jets"
|
|
12
|
+
gem "rspec_junit_formatter"
|
|
13
|
+
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,54 +1,154 @@
|
|
|
1
|
+
GIT
|
|
2
|
+
remote: https://github.com/tongueroo/webpacker.git
|
|
3
|
+
revision: a8c46614c6757fab65e4d0c47d8203014e7b4ef9
|
|
4
|
+
branch: jets
|
|
5
|
+
specs:
|
|
6
|
+
webpacker (3.2.0)
|
|
7
|
+
activesupport (>= 4.2)
|
|
8
|
+
rack-proxy (>= 0.6.1)
|
|
9
|
+
railties (>= 4.2)
|
|
10
|
+
|
|
1
11
|
PATH
|
|
2
12
|
remote: .
|
|
3
13
|
specs:
|
|
4
14
|
jets (0.2.0)
|
|
15
|
+
actionpack
|
|
16
|
+
actionview
|
|
17
|
+
activerecord
|
|
5
18
|
activesupport
|
|
19
|
+
aws-sdk-cloudformation
|
|
20
|
+
aws-sdk-dynamodb
|
|
21
|
+
aws-sdk-lambda
|
|
22
|
+
aws-sdk-s3
|
|
6
23
|
colorize
|
|
24
|
+
dotenv
|
|
25
|
+
gems
|
|
7
26
|
hashie
|
|
27
|
+
json
|
|
28
|
+
kramdown
|
|
29
|
+
memoist
|
|
30
|
+
pg (= 0.21)
|
|
31
|
+
rack
|
|
32
|
+
railties
|
|
33
|
+
recursive-open-struct
|
|
34
|
+
text-table
|
|
8
35
|
thor
|
|
9
36
|
|
|
10
37
|
GEM
|
|
11
38
|
remote: https://rubygems.org/
|
|
12
39
|
specs:
|
|
13
|
-
|
|
40
|
+
actionpack (5.2.1)
|
|
41
|
+
actionview (= 5.2.1)
|
|
42
|
+
activesupport (= 5.2.1)
|
|
43
|
+
rack (~> 2.0)
|
|
44
|
+
rack-test (>= 0.6.3)
|
|
45
|
+
rails-dom-testing (~> 2.0)
|
|
46
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
47
|
+
actionview (5.2.1)
|
|
48
|
+
activesupport (= 5.2.1)
|
|
49
|
+
builder (~> 3.1)
|
|
50
|
+
erubi (~> 1.4)
|
|
51
|
+
rails-dom-testing (~> 2.0)
|
|
52
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
|
53
|
+
activemodel (5.2.1)
|
|
54
|
+
activesupport (= 5.2.1)
|
|
55
|
+
activerecord (5.2.1)
|
|
56
|
+
activemodel (= 5.2.1)
|
|
57
|
+
activesupport (= 5.2.1)
|
|
58
|
+
arel (>= 9.0)
|
|
59
|
+
activesupport (5.2.1)
|
|
14
60
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
15
|
-
i18n (
|
|
61
|
+
i18n (>= 0.7, < 2)
|
|
16
62
|
minitest (~> 5.1)
|
|
17
63
|
tzinfo (~> 1.1)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
64
|
+
arel (9.0.0)
|
|
65
|
+
aws-eventstream (1.0.1)
|
|
66
|
+
aws-partitions (1.98.0)
|
|
67
|
+
aws-sdk-cloudformation (1.6.0)
|
|
68
|
+
aws-sdk-core (~> 3)
|
|
69
|
+
aws-sigv4 (~> 1.0)
|
|
70
|
+
aws-sdk-core (3.24.1)
|
|
71
|
+
aws-eventstream (~> 1.0)
|
|
72
|
+
aws-partitions (~> 1.0)
|
|
73
|
+
aws-sigv4 (~> 1.0)
|
|
74
|
+
jmespath (~> 1.0)
|
|
75
|
+
aws-sdk-dynamodb (1.10.0)
|
|
76
|
+
aws-sdk-core (~> 3)
|
|
77
|
+
aws-sigv4 (~> 1.0)
|
|
78
|
+
aws-sdk-kms (1.7.0)
|
|
79
|
+
aws-sdk-core (~> 3)
|
|
80
|
+
aws-sigv4 (~> 1.0)
|
|
81
|
+
aws-sdk-lambda (1.8.0)
|
|
82
|
+
aws-sdk-core (~> 3)
|
|
83
|
+
aws-sigv4 (~> 1.0)
|
|
84
|
+
aws-sdk-s3 (1.17.0)
|
|
85
|
+
aws-sdk-core (~> 3, >= 3.21.2)
|
|
86
|
+
aws-sdk-kms (~> 1)
|
|
87
|
+
aws-sigv4 (~> 1.0)
|
|
88
|
+
aws-sigv4 (1.0.3)
|
|
89
|
+
builder (3.2.3)
|
|
90
|
+
byebug (10.0.2)
|
|
21
91
|
colorize (0.8.1)
|
|
22
92
|
concurrent-ruby (1.0.5)
|
|
93
|
+
crass (1.0.4)
|
|
23
94
|
diff-lcs (1.3)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
95
|
+
dotenv (2.5.0)
|
|
96
|
+
erubi (1.7.1)
|
|
97
|
+
gems (1.1.1)
|
|
98
|
+
json
|
|
99
|
+
hashie (3.6.0)
|
|
100
|
+
i18n (1.1.0)
|
|
27
101
|
concurrent-ruby (~> 1.0)
|
|
102
|
+
jmespath (1.4.0)
|
|
28
103
|
json (2.1.0)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
104
|
+
kramdown (1.17.0)
|
|
105
|
+
loofah (2.2.2)
|
|
106
|
+
crass (~> 1.0.2)
|
|
107
|
+
nokogiri (>= 1.5.9)
|
|
108
|
+
memoist (0.16.0)
|
|
109
|
+
method_source (0.9.0)
|
|
110
|
+
mini_portile2 (2.3.0)
|
|
111
|
+
minitest (5.11.3)
|
|
112
|
+
nokogiri (1.8.4)
|
|
113
|
+
mini_portile2 (~> 2.3.0)
|
|
114
|
+
pg (0.21.0)
|
|
115
|
+
rack (2.0.5)
|
|
116
|
+
rack-proxy (0.6.4)
|
|
117
|
+
rack
|
|
118
|
+
rack-test (1.1.0)
|
|
119
|
+
rack (>= 1.0, < 3)
|
|
120
|
+
rails-dom-testing (2.0.3)
|
|
121
|
+
activesupport (>= 4.2.0)
|
|
122
|
+
nokogiri (>= 1.6)
|
|
123
|
+
rails-html-sanitizer (1.0.4)
|
|
124
|
+
loofah (~> 2.2, >= 2.2.2)
|
|
125
|
+
railties (5.2.1)
|
|
126
|
+
actionpack (= 5.2.1)
|
|
127
|
+
activesupport (= 5.2.1)
|
|
128
|
+
method_source
|
|
129
|
+
rake (>= 0.8.7)
|
|
130
|
+
thor (>= 0.19.0, < 2.0)
|
|
131
|
+
rake (12.3.1)
|
|
132
|
+
recursive-open-struct (1.1.0)
|
|
133
|
+
rspec (3.8.0)
|
|
134
|
+
rspec-core (~> 3.8.0)
|
|
135
|
+
rspec-expectations (~> 3.8.0)
|
|
136
|
+
rspec-mocks (~> 3.8.0)
|
|
137
|
+
rspec-core (3.8.0)
|
|
138
|
+
rspec-support (~> 3.8.0)
|
|
139
|
+
rspec-expectations (3.8.1)
|
|
38
140
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
39
|
-
rspec-support (~> 3.
|
|
40
|
-
rspec-mocks (3.
|
|
141
|
+
rspec-support (~> 3.8.0)
|
|
142
|
+
rspec-mocks (3.8.0)
|
|
41
143
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
42
|
-
rspec-support (~> 3.
|
|
43
|
-
rspec-support (3.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
simplecov-html (~> 0.10.0)
|
|
48
|
-
simplecov-html (0.10.2)
|
|
144
|
+
rspec-support (~> 3.8.0)
|
|
145
|
+
rspec-support (3.8.0)
|
|
146
|
+
rspec_junit_formatter (0.4.1)
|
|
147
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
|
148
|
+
text-table (1.2.4)
|
|
49
149
|
thor (0.20.0)
|
|
50
150
|
thread_safe (0.3.6)
|
|
51
|
-
tzinfo (1.2.
|
|
151
|
+
tzinfo (1.2.5)
|
|
52
152
|
thread_safe (~> 0.1)
|
|
53
153
|
|
|
54
154
|
PLATFORMS
|
|
@@ -57,7 +157,11 @@ PLATFORMS
|
|
|
57
157
|
DEPENDENCIES
|
|
58
158
|
bundler
|
|
59
159
|
byebug
|
|
60
|
-
codeclimate-test-reporter
|
|
61
160
|
jets!
|
|
62
161
|
rake
|
|
63
162
|
rspec
|
|
163
|
+
rspec_junit_formatter
|
|
164
|
+
webpacker!
|
|
165
|
+
|
|
166
|
+
BUNDLED WITH
|
|
167
|
+
1.16.3
|
data/LICENSE.txt
CHANGED
data/Procfile
ADDED
data/README.md
CHANGED
|
@@ -1,37 +1,136 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<link href="http://rubyonjets.com"><img src="http://rubyonjets.com/img/logos/jets-logo.png" /></img>
|
|
3
|
+
</div>
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
[](https://codeclimate.com/)
|
|
5
|
+

|
|
6
|
+
[](https://circleci.com/gh/tongueroo/jets)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
Ruby and Lambda splat out a baby and that child's name is Jets.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
## What is Jets?
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
Jets is a Ruby Serverless Framework that allows you to create applications. It includes everything required to build an application and deploy it to on AWS Lambda.
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
It is key to understand AWS Lambda and API Gateway to understand Jets conceptually. Jets maps your code to Lambda functions and API Gateway resources.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
* **AWS Lambda** is Functions as a Service. It allows you to upload and run functions without worrying about the underlying infrastructure.
|
|
17
|
+
* **API Gateway** is the routing layer for Lambda. It is used to route REST URL endpoints to Lambda functions.
|
|
18
|
+
|
|
19
|
+
The official documentation is at: [Ruby on Jets](http://rubyonjets.com).
|
|
20
|
+
|
|
21
|
+
Refer to the official docs for more info, but here's a quick intro.
|
|
22
|
+
|
|
23
|
+
### Jets Controllers
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
A Jets controller handles a web request and renders a response. Here's an example:
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
`app/controllers/posts_controller.rb`:
|
|
28
|
+
|
|
29
|
+
```ruby
|
|
30
|
+
class PostsController < ApplicationController
|
|
31
|
+
def index
|
|
32
|
+
# renders Lambda Proxy structure compatiable with API Gateway
|
|
33
|
+
render json: {hello: "world", action: "index"}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def show
|
|
37
|
+
id = params[:id] # params available
|
|
38
|
+
# puts goes to the lambda logs
|
|
39
|
+
puts event # raw lambda event available
|
|
40
|
+
render json: {action: "show", id: id}
|
|
41
|
+
end
|
|
42
|
+
end
|
|
23
43
|
```
|
|
24
44
|
|
|
25
|
-
|
|
45
|
+
Jets creates Lambda functions each the public method in your controller.
|
|
46
|
+
|
|
47
|
+
### Jets Routing
|
|
48
|
+
|
|
49
|
+
You connect Lambda functions to API Gateway URL endpoints with a routes file:
|
|
26
50
|
|
|
51
|
+
`config/routes.rb`:
|
|
52
|
+
|
|
53
|
+
```ruby
|
|
54
|
+
Jets.application.routes.draw do
|
|
55
|
+
get "posts", to: "posts#index"
|
|
56
|
+
get "posts/new", to: "posts#new"
|
|
57
|
+
get "posts/:id", to: "posts#show"
|
|
58
|
+
post "posts", to: "posts#create"
|
|
59
|
+
get "posts/:id/edit", to: "posts#edit"
|
|
60
|
+
put "posts", to: "posts#update"
|
|
61
|
+
delete "posts", to: "posts#delete"
|
|
62
|
+
|
|
63
|
+
resources :comments # expands to the RESTful routes above
|
|
64
|
+
|
|
65
|
+
any "posts/hot", to: "posts#hot" # GET, POST, PUT, etc request all work
|
|
66
|
+
end
|
|
27
67
|
```
|
|
28
|
-
|
|
68
|
+
|
|
69
|
+
Test your API Gateway endpoints with curl or postman. Note, replace the URL endpoint with the one that is created:
|
|
70
|
+
|
|
71
|
+
$ curl -s "https://quabepiu80.execute-api.us-east-1.amazonaws.com/dev/posts" | jq .
|
|
72
|
+
{
|
|
73
|
+
"hello": "world",
|
|
74
|
+
"action": "index"
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
### Jets Workers
|
|
78
|
+
|
|
79
|
+
A Jets worker handles background jobs. It is performed outside of the web request/response cycle. Here's an example:
|
|
80
|
+
|
|
81
|
+
```ruby
|
|
82
|
+
class HardJob < ApplicationJob
|
|
83
|
+
rate "10 hours" # every 10 hours
|
|
84
|
+
def dig
|
|
85
|
+
{done: "digging"}
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
cron "0 */12 * * ? *" # every 12 hours
|
|
89
|
+
def lift
|
|
90
|
+
{done: "lifting"}
|
|
91
|
+
end
|
|
92
|
+
end
|
|
29
93
|
```
|
|
30
94
|
|
|
95
|
+
`HardJob#dig` will be ran every 10 hours and `HardJob#lift` will be ran every 12 hours.
|
|
96
|
+
|
|
97
|
+
### Jets Deployment
|
|
98
|
+
|
|
99
|
+
You can test your application with a local server that mimics API Gateway: [Jets Local Server](http://rubyonjets.com/docs/local-server/). Once ready, deploying to AWS Lambda is a single command.
|
|
100
|
+
|
|
101
|
+
jets deploy
|
|
102
|
+
|
|
103
|
+
After deployment, you can test the Lambda functions with the AWS Lambda console or the CLI.
|
|
104
|
+
|
|
105
|
+
### AWS Lambda Console
|
|
106
|
+
|
|
107
|
+

|
|
108
|
+
|
|
109
|
+
### More Info
|
|
110
|
+
|
|
111
|
+
For more documentation, check out the official docs: [Ruby on Jets](http://rubyonjets.com/). Here's a list of useful links:
|
|
112
|
+
|
|
113
|
+
* [Quick Start](http://rubyonjets.com/quick-start/)
|
|
114
|
+
* [Local Jets Server](http://rubyonjets.com/docs/local-server/)
|
|
115
|
+
* [REPL Console](http://rubyonjets.com/docs/repl-console/)
|
|
116
|
+
* [Jets Call](http://rubyonjets.com/docs/jets-call/)
|
|
117
|
+
* [Project Structure](http://rubyonjets.com/project-structure/)
|
|
118
|
+
* [App Configuration](http://rubyonjets.com/app-config/)
|
|
119
|
+
* [Database Support](http://rubyonjets.com/docs/database-support/)
|
|
120
|
+
* [Polymorphic Support](http://rubyonjets.com/docs/polymorphic-support/)
|
|
121
|
+
* [Tutorials](http://rubyonjets.com/docs/tutorials/)
|
|
122
|
+
* [How Jets Works](http://rubyonjets.com/docs/how-jets-works/)
|
|
123
|
+
* [Prewarming](http://rubyonjets.com/docs/prewarming/)
|
|
124
|
+
* [Installation](http://rubyonjets.com/docs/install/)
|
|
125
|
+
* [CLI Reference](http://rubyonjets.com/reference/)
|
|
126
|
+
|
|
31
127
|
## Contributing
|
|
32
128
|
|
|
129
|
+
I love pull requests! Happy to answer questions to help.
|
|
130
|
+
|
|
33
131
|
1. Fork it
|
|
34
132
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
35
|
-
3. Commit your changes (`git commit -am
|
|
133
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
36
134
|
4. Push to the branch (`git push origin my-new-feature`)
|
|
37
135
|
5. Create new Pull Request
|
|
136
|
+
|