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.
Files changed (292) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/bin/commit_docs.sh +26 -0
  3. data/.circleci/config.yml +126 -0
  4. data/.codebuild/README.md +57 -0
  5. data/.codebuild/bin/jets +3 -0
  6. data/.codebuild/buildspec-base.yml +14 -0
  7. data/.codebuild/integration.sh +54 -0
  8. data/.codebuild/jets.postman_collection.json +323 -0
  9. data/.codebuild/scripts/install-docker.sh +12 -0
  10. data/.codebuild/scripts/install-dynamodb-local.sh +22 -0
  11. data/.codebuild/scripts/install-java.sh +20 -0
  12. data/.codebuild/scripts/install-node.sh +4 -0
  13. data/.gitignore +3 -0
  14. data/.gitmodules +9 -0
  15. data/.python-version +1 -0
  16. data/.rspec +2 -0
  17. data/.ruby-version +1 -1
  18. data/CHANGELOG.md +3 -0
  19. data/Dockerfile +16 -0
  20. data/Dockerfile.base +53 -0
  21. data/Gemfile +8 -1
  22. data/Gemfile.lock +132 -28
  23. data/LICENSE.txt +1 -1
  24. data/Procfile +2 -0
  25. data/README.md +116 -17
  26. data/Rakefile +6 -0
  27. data/buildspec.yml +18 -0
  28. data/exe/jets +14 -0
  29. data/jets.gemspec +31 -3
  30. data/lib/jets.rb +56 -8
  31. data/lib/jets/application.rb +121 -0
  32. data/lib/jets/application/middleware.rb +23 -0
  33. data/lib/jets/aws_services.rb +71 -0
  34. data/lib/jets/booter.rb +95 -0
  35. data/lib/jets/builders.rb +6 -0
  36. data/lib/jets/builders/code_builder.rb +431 -0
  37. data/lib/jets/builders/deducer.rb +73 -0
  38. data/lib/jets/builders/gem_replacer.rb +154 -0
  39. data/lib/jets/builders/handler_generator.rb +76 -0
  40. data/lib/jets/builders/node-hello.js +73 -0
  41. data/lib/jets/builders/node-shim.js +151 -0
  42. data/lib/jets/cfn.rb +5 -4
  43. data/lib/jets/cfn/ship.rb +178 -0
  44. data/lib/jets/cfn/status.rb +208 -0
  45. data/lib/jets/cfn/template_builders.rb +21 -0
  46. data/lib/jets/cfn/template_builders/api_gateway_builder.rb +73 -0
  47. data/lib/jets/cfn/template_builders/api_gateway_deployment_builder.rb +38 -0
  48. data/lib/jets/cfn/template_builders/base_child_builder.rb +38 -0
  49. data/lib/jets/cfn/template_builders/controller_builder.rb +107 -0
  50. data/lib/jets/cfn/template_builders/function_builder.rb +20 -0
  51. data/lib/jets/cfn/template_builders/function_properties.rb +6 -0
  52. data/lib/jets/cfn/template_builders/function_properties/base_builder.rb +106 -0
  53. data/lib/jets/cfn/template_builders/function_properties/node_builder.rb +12 -0
  54. data/lib/jets/cfn/template_builders/function_properties/python_builder.rb +12 -0
  55. data/lib/jets/cfn/template_builders/function_properties/ruby_builder.rb +13 -0
  56. data/lib/jets/cfn/template_builders/interface.rb +91 -0
  57. data/lib/jets/cfn/template_builders/job_builder.rb +63 -0
  58. data/lib/jets/cfn/template_builders/parent_builder.rb +97 -0
  59. data/lib/jets/cfn/template_builders/rule_builder.rb +55 -0
  60. data/lib/jets/cfn/template_builders/templates/minimal-stack.yml +45 -0
  61. data/lib/jets/cfn/template_mappers.rb +23 -0
  62. data/lib/jets/cfn/template_mappers/api_gateway_deployment_mapper.rb +48 -0
  63. data/lib/jets/cfn/template_mappers/api_gateway_mapper.rb +4 -0
  64. data/lib/jets/cfn/template_mappers/child_mapper.rb +41 -0
  65. data/lib/jets/cfn/template_mappers/config_rule_mapper.rb +34 -0
  66. data/lib/jets/cfn/template_mappers/controller_mapper.rb +36 -0
  67. data/lib/jets/cfn/template_mappers/events_rule_mapper.rb +40 -0
  68. data/lib/jets/cfn/template_mappers/function_mapper.rb +4 -0
  69. data/lib/jets/cfn/template_mappers/gateway_method_mapper.rb +56 -0
  70. data/lib/jets/cfn/template_mappers/gateway_resource_mapper.rb +62 -0
  71. data/lib/jets/cfn/template_mappers/job_mapper.rb +4 -0
  72. data/lib/jets/cfn/template_mappers/lambda_function_mapper.rb +50 -0
  73. data/lib/jets/cfn/template_mappers/rule_mapper.rb +5 -0
  74. data/lib/jets/cli.rb +180 -15
  75. data/lib/jets/commands.rb +22 -0
  76. data/lib/jets/commands/base.rb +151 -0
  77. data/lib/jets/commands/build.rb +186 -0
  78. data/lib/jets/commands/call.rb +175 -0
  79. data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
  80. data/lib/jets/commands/call/autoload_guesser.rb +112 -0
  81. data/lib/jets/commands/call/base_guesser.rb +33 -0
  82. data/lib/jets/commands/call/guesser.rb +51 -0
  83. data/lib/jets/commands/console.rb +12 -0
  84. data/lib/jets/commands/db.rb +15 -0
  85. data/lib/jets/commands/db/environment-task.rake +3 -0
  86. data/lib/jets/commands/db/tasks.rb +30 -0
  87. data/lib/jets/commands/dbconsole.rb +131 -0
  88. data/lib/jets/commands/delete.rb +119 -0
  89. data/lib/jets/commands/deploy.rb +53 -0
  90. data/lib/jets/commands/dynamodb.rb +22 -0
  91. data/lib/jets/commands/dynamodb/migrate.rb +9 -0
  92. data/lib/jets/commands/dynamodb/migrator.rb +36 -0
  93. data/lib/jets/commands/help.rb +9 -0
  94. data/lib/jets/commands/help/build.md +1 -0
  95. data/lib/jets/commands/help/call.md +55 -0
  96. data/lib/jets/commands/help/console.md +4 -0
  97. data/lib/jets/commands/help/db/generate.md +8 -0
  98. data/lib/jets/commands/help/dbconsole.md +5 -0
  99. data/lib/jets/commands/help/delete.md +9 -0
  100. data/lib/jets/commands/help/deploy.md +5 -0
  101. data/lib/jets/commands/help/dynamodb/generate.md +50 -0
  102. data/lib/jets/commands/help/dynamodb/migrate.md +4 -0
  103. data/lib/jets/commands/help/generate.md +5 -0
  104. data/lib/jets/commands/help/new.md +9 -0
  105. data/lib/jets/commands/help/process/controller.md +6 -0
  106. data/lib/jets/commands/help/process/function.md +5 -0
  107. data/lib/jets/commands/help/process/job.md +5 -0
  108. data/lib/jets/commands/help/process/rule.md +5 -0
  109. data/lib/jets/commands/help/routes.md +3 -0
  110. data/lib/jets/commands/help/server.md +6 -0
  111. data/lib/jets/commands/help/status.md +1 -0
  112. data/lib/jets/commands/help/url.md +5 -0
  113. data/lib/jets/commands/main.rb +111 -0
  114. data/lib/jets/commands/markdown.rb +8 -0
  115. data/lib/jets/commands/markdown/creator.rb +58 -0
  116. data/lib/jets/commands/markdown/index.rb +27 -0
  117. data/lib/jets/commands/markdown/page.rb +125 -0
  118. data/lib/jets/commands/markdown/shell.rb +11 -0
  119. data/lib/jets/commands/new.rb +110 -0
  120. data/lib/jets/commands/rake_command.rb +61 -0
  121. data/lib/jets/commands/rake_tasks.rb +45 -0
  122. data/lib/jets/commands/sequence.rb +44 -0
  123. data/lib/jets/commands/stack_info.rb +30 -0
  124. data/lib/jets/commands/templates/skeleton/.env +2 -0
  125. data/lib/jets/commands/templates/skeleton/.env.development.tt +3 -0
  126. data/lib/jets/commands/templates/skeleton/.env.test +3 -0
  127. data/lib/jets/commands/templates/skeleton/.gitignore +14 -0
  128. data/lib/jets/commands/templates/skeleton/.jetskeep +1 -0
  129. data/lib/jets/commands/templates/skeleton/Gemfile.tt +27 -0
  130. data/lib/jets/commands/templates/skeleton/Procfile +7 -0
  131. data/lib/jets/commands/templates/skeleton/README.md +4 -0
  132. data/lib/jets/commands/templates/skeleton/Rakefile +2 -0
  133. data/lib/jets/commands/templates/skeleton/app/controllers/application_controller.rb +2 -0
  134. data/lib/jets/commands/templates/skeleton/app/helpers/application_helper.rb +2 -0
  135. data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +2 -0
  136. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +2 -0
  137. data/lib/jets/commands/templates/skeleton/app/models/application_record.rb +3 -0
  138. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +24 -0
  139. data/lib/jets/commands/templates/skeleton/bin/ruby_server +18 -0
  140. data/lib/jets/commands/templates/skeleton/bin/ruby_server.rb +2 -0
  141. data/lib/jets/commands/templates/skeleton/config.ru +4 -0
  142. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +26 -0
  143. data/lib/jets/commands/templates/skeleton/config/database.yml.tt +27 -0
  144. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +25 -0
  145. data/lib/jets/commands/templates/skeleton/config/routes.rb +8 -0
  146. data/lib/jets/commands/templates/skeleton/db/.gitkeep +0 -0
  147. data/lib/jets/commands/templates/skeleton/public/404.html +67 -0
  148. data/lib/jets/commands/templates/skeleton/public/422.html +67 -0
  149. data/lib/jets/commands/templates/skeleton/public/500.html +66 -0
  150. data/lib/jets/commands/templates/skeleton/public/favicon.ico +0 -0
  151. data/lib/jets/commands/templates/skeleton/public/index.html.tt +79 -0
  152. data/lib/jets/commands/templates/skeleton/spec/controllers/posts_controller_spec.rb +18 -0
  153. data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-index.json +51 -0
  154. data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-show.json +53 -0
  155. data/lib/jets/commands/templates/skeleton/spec/spec_helper.rb.tt +27 -0
  156. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +14 -0
  157. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +24 -0
  158. data/lib/jets/commands/templates/webpacker/app/javascript/src/jets/crud.js +87 -0
  159. data/lib/jets/commands/url.rb +45 -0
  160. data/lib/jets/commands/webpacker_template.rb +19 -0
  161. data/lib/jets/controller.rb +9 -0
  162. data/lib/jets/controller/base.rb +50 -0
  163. data/lib/jets/controller/callbacks.rb +43 -0
  164. data/lib/jets/controller/layout.rb +17 -0
  165. data/lib/jets/controller/params.rb +53 -0
  166. data/lib/jets/controller/redirection.rb +55 -0
  167. data/lib/jets/controller/renderers.rb +5 -0
  168. data/lib/jets/controller/renderers/aws_proxy_renderer.rb +69 -0
  169. data/lib/jets/controller/renderers/base_renderer.rb +16 -0
  170. data/lib/jets/controller/renderers/template_renderer.rb +107 -0
  171. data/lib/jets/controller/rendering.rb +80 -0
  172. data/lib/jets/controller/request.rb +55 -0
  173. data/lib/jets/core.rb +81 -0
  174. data/lib/jets/default/application.rb +20 -0
  175. data/lib/jets/dotenv.rb +37 -0
  176. data/lib/jets/erb.rb +51 -0
  177. data/lib/jets/generator.rb +40 -0
  178. data/lib/jets/generator/templates/erb/controller/view.html.erb +2 -0
  179. data/lib/jets/generator/templates/erb/scaffold/_form.html.erb +39 -0
  180. data/lib/jets/generator/templates/erb/scaffold/edit.html.erb +6 -0
  181. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +29 -0
  182. data/lib/jets/generator/templates/erb/scaffold/new.html.erb +5 -0
  183. data/lib/jets/generator/templates/erb/scaffold/show.html.erb +9 -0
  184. data/lib/jets/generator/templates/rails/assets/javascript.js +2 -0
  185. data/lib/jets/generator/templates/rails/assets/stylesheet.css +4 -0
  186. data/lib/jets/generator/templates/rails/controller/controller.rb +13 -0
  187. data/lib/jets/generator/templates/rails/helper/helper.rb +4 -0
  188. data/lib/jets/generator/templates/rails/scaffold/scaffold.css +80 -0
  189. data/lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb +62 -0
  190. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +71 -0
  191. data/lib/jets/internal/app/controllers/jets/public_controller.rb +30 -0
  192. data/lib/jets/internal/app/controllers/jets/public_controller/python/show.py +47 -0
  193. data/lib/jets/internal/app/controllers/jets/public_controller/python/show.pyc +0 -0
  194. data/lib/jets/internal/app/controllers/jets/welcome_controller.rb +22 -0
  195. data/lib/jets/internal/app/controllers/jets/welcome_controller/python/index.py +24 -0
  196. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +52 -0
  197. data/lib/jets/job.rb +5 -0
  198. data/lib/jets/job/base.rb +29 -0
  199. data/lib/jets/job/dsl.rb +58 -0
  200. data/lib/jets/job/task.rb +17 -0
  201. data/lib/jets/klass.rb +71 -0
  202. data/lib/jets/lambda.rb +18 -0
  203. data/lib/jets/lambda/dsl.rb +153 -0
  204. data/lib/jets/lambda/function.rb +29 -0
  205. data/lib/jets/lambda/function_constructor.rb +60 -0
  206. data/lib/jets/lambda/functions.rb +22 -0
  207. data/lib/jets/lambda/task.rb +77 -0
  208. data/lib/jets/naming.rb +61 -0
  209. data/lib/jets/pascalize.rb +30 -0
  210. data/lib/jets/poly_fun.rb +61 -0
  211. data/lib/jets/poly_fun/base_executor.rb +129 -0
  212. data/lib/jets/poly_fun/lambda_executor.rb +16 -0
  213. data/lib/jets/poly_fun/node_error.rb +8 -0
  214. data/lib/jets/poly_fun/node_executor.rb +54 -0
  215. data/lib/jets/poly_fun/python_error.rb +8 -0
  216. data/lib/jets/poly_fun/python_executor.rb +23 -0
  217. data/lib/jets/preheat.rb +72 -0
  218. data/lib/jets/processors.rb +4 -0
  219. data/lib/jets/processors/deducer.rb +54 -0
  220. data/lib/jets/processors/main_processor.rb +57 -0
  221. data/lib/jets/rails_overrides.rb +4 -0
  222. data/lib/jets/rails_overrides/asset_tag_helper.rb +41 -0
  223. data/lib/jets/rails_overrides/common_methods.rb +13 -0
  224. data/lib/jets/rails_overrides/rendering_helper.rb +26 -0
  225. data/lib/jets/rails_overrides/url_helper.rb +26 -0
  226. data/lib/jets/route.rb +145 -0
  227. data/lib/jets/router.rb +115 -0
  228. data/lib/jets/ruby_server.rb +91 -0
  229. data/lib/jets/rule.rb +5 -0
  230. data/lib/jets/rule/base.rb +19 -0
  231. data/lib/jets/rule/dsl.rb +64 -0
  232. data/lib/jets/rule/task.rb +44 -0
  233. data/lib/jets/server.rb +16 -0
  234. data/lib/jets/server/api_gateway.rb +39 -0
  235. data/lib/jets/server/lambda_aws_proxy.rb +122 -0
  236. data/lib/jets/server/route_matcher.rb +96 -0
  237. data/lib/jets/server/timing_middleware.rb +16 -0
  238. data/lib/jets/server/webpacker_setup.rb +7 -0
  239. data/lib/jets/timing.rb +65 -0
  240. data/lib/jets/timing/report.rb +82 -0
  241. data/lib/jets/util.rb +7 -12
  242. data/lib/jets/version.rb +1 -1
  243. data/support/clean +3 -0
  244. data/support/console +3 -0
  245. metadata +473 -76
  246. data/bin/jets +0 -14
  247. data/lib/jets/base_controller.rb +0 -54
  248. data/lib/jets/build.rb +0 -46
  249. data/lib/jets/build/handler_generator.rb +0 -46
  250. data/lib/jets/build/lambda_deducer.rb +0 -23
  251. data/lib/jets/build/templates/handler.js +0 -149
  252. data/lib/jets/build/traveling_ruby.rb +0 -133
  253. data/lib/jets/cfn/base.rb +0 -17
  254. data/lib/jets/cfn/builder.rb +0 -53
  255. data/lib/jets/cfn/namer.rb +0 -30
  256. data/lib/jets/cli/help.rb +0 -19
  257. data/lib/jets/command.rb +0 -25
  258. data/lib/jets/process.rb +0 -18
  259. data/lib/jets/process/base_processor.rb +0 -23
  260. data/lib/jets/process/controller_processor.rb +0 -36
  261. data/lib/jets/process/help.rb +0 -11
  262. data/lib/jets/process/processor_deducer.rb +0 -51
  263. data/lib/jets/project.rb +0 -23
  264. data/notes/design.md +0 -107
  265. data/notes/faq.md +0 -3
  266. data/notes/lambda_ruby_info.md +0 -34
  267. data/notes/traveling-ruby-packaging-jets.md +0 -26
  268. data/notes/traveling-ruby-packaging.md +0 -103
  269. data/notes/traveling-ruby-structure.md +0 -6
  270. data/notes/traveling-ruby.md +0 -82
  271. data/spec/fixtures/classes.rb +0 -5
  272. data/spec/fixtures/project/.gitignore +0 -3
  273. data/spec/fixtures/project/.ruby-version +0 -1
  274. data/spec/fixtures/project/Gemfile +0 -4
  275. data/spec/fixtures/project/Gemfile.lock +0 -23
  276. data/spec/fixtures/project/app/controllers/application_controller.rb +0 -2
  277. data/spec/fixtures/project/app/controllers/posts_controller.rb +0 -12
  278. data/spec/fixtures/project/bin/jets +0 -22
  279. data/spec/fixtures/project/config/routes.rb +0 -6
  280. data/spec/fixtures/project/handlers/controllers/posts.js +0 -212
  281. data/spec/lib/cli_spec.rb +0 -20
  282. data/spec/lib/jets/base_controller_spec.rb +0 -18
  283. data/spec/lib/jets/build/handler_generator_spec.rb +0 -20
  284. data/spec/lib/jets/build/lambda_deducer_spec.rb +0 -15
  285. data/spec/lib/jets/build_spec.rb +0 -34
  286. data/spec/lib/jets/cfn/builder_spec.rb +0 -18
  287. data/spec/lib/jets/cfn/namer_spec.rb +0 -16
  288. data/spec/lib/jets/process/controller_processor_spec.rb +0 -22
  289. data/spec/lib/jets/process/infer_spec.rb +0 -24
  290. data/spec/lib/jets/process_spec.rb +0 -18
  291. data/spec/lib/jets/project_spec.rb +0 -14
  292. 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
@@ -0,0 +1,4 @@
1
+ #!/bin/bash -eux
2
+ curl -sL https://deb.nodesource.com/setup_10.x | bash -
3
+ apt-get install -y nodejs
4
+ npm install -g yarn
data/.gitignore CHANGED
@@ -14,3 +14,6 @@ spec/reports
14
14
  test/tmp
15
15
  test/version_tmp
16
16
  tmp
17
+
18
+ spec/fixtures/project/handlers
19
+ .codebuild/definitions
@@ -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
@@ -0,0 +1 @@
1
+ 3.6.6
data/.rspec CHANGED
@@ -1,2 +1,4 @@
1
1
  --color
2
+ --exclude-pattern spec/fixtures/apps/**/*
2
3
  --format documentation
4
+ --require spec_helper
@@ -1 +1 @@
1
- 2.2.2
1
+ 2.5.1
@@ -3,5 +3,8 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [0.5.0]
7
+ - First good release
8
+
6
9
  ## [0.1.2]
7
10
  - Fix bundled gems.
@@ -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"]
@@ -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
- gem "codeclimate-test-reporter", group: :test, require: nil
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
@@ -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
- activesupport (5.1.4)
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 (~> 0.7)
61
+ i18n (>= 0.7, < 2)
16
62
  minitest (~> 5.1)
17
63
  tzinfo (~> 1.1)
18
- byebug (9.1.0)
19
- codeclimate-test-reporter (1.0.8)
20
- simplecov (<= 0.13)
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
- docile (1.1.5)
25
- hashie (3.5.6)
26
- i18n (0.9.0)
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
- minitest (5.10.3)
30
- rake (12.2.1)
31
- rspec (3.7.0)
32
- rspec-core (~> 3.7.0)
33
- rspec-expectations (~> 3.7.0)
34
- rspec-mocks (~> 3.7.0)
35
- rspec-core (3.7.0)
36
- rspec-support (~> 3.7.0)
37
- rspec-expectations (3.7.0)
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.7.0)
40
- rspec-mocks (3.7.0)
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.7.0)
43
- rspec-support (3.7.0)
44
- simplecov (0.13.0)
45
- docile (~> 1.1.0)
46
- json (>= 1.8, < 3)
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.3)
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
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Tung Nguyen
1
+ Copyright (c) 2017 Tung Nguyen
2
2
 
3
3
  MIT License
4
4
 
@@ -0,0 +1,2 @@
1
+ local: dynamodb-local # port 8000
2
+ admin: env AWS_ACCESS_KEY_ID=$DYNAMODB_ADMIN_AWS_ACCESS_KEY_ID PORT=8001 dynamodb-admin # port 8001
data/README.md CHANGED
@@ -1,37 +1,136 @@
1
- # Jets
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
- [![Build Status](https://magnum.travis-ci.com/)](https://magnum.travis-ci.com/)
4
- [![Code Climate](https://codeclimate.com/)](https://codeclimate.com/)
5
- [![Code Climate](https://codeclimate.com/)](https://codeclimate.com/)
5
+ ![Build Status](https://codebuild.us-west-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiUE12K3ljQTFQUjVpRW0reGhGVHVQdkplTHlOdUtENnBya2JhVWVXaFIvTU92MlBtV3hIUE9pb25jWGw0MS9jN2RXMERKRHh5Nzhvd01Za0NyeUs5SCtzPSIsIml2UGFyYW1ldGVyU3BlYyI6IkMybEJFaXdzejJEaHNWVmEiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=master)
6
+ [![CircleCI](https://circleci.com/gh/tongueroo/jets.svg?style=svg)](https://circleci.com/gh/tongueroo/jets)
6
7
 
7
- To these the jets, run these commands:
8
+ Ruby and Lambda splat out a baby and that child's name is Jets.
8
9
 
9
- TODO: Write a gem description
10
+ ## What is Jets?
10
11
 
11
- ## Installation
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
- Add this line to your application's Gemfile:
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
- ```sh
16
- gem "jets"
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
- And then execute:
25
+ A Jets controller handles a web request and renders a response. Here's an example:
20
26
 
21
- ```sh
22
- $ bundle
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
- Or install it yourself as:
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
- $ gem install jets
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
+ ![Lambda Console](https://s3.amazonaws.com/boltops-demo/images/screenshots/lambda-console-posts-controller-index.png)
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 "Add some feature"`)
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
+