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,61 @@
1
+ class Jets::Commands::RakeCommand
2
+ class << self
3
+ # Same signature as Jets::Commands::Base.perform.
4
+ def perform(namespaced_command, thor_args)
5
+ if thor_args.first == "help"
6
+ puts help_message(namespaced_command)
7
+ return
8
+ end
9
+
10
+ require_rake
11
+
12
+ ARGV.unshift(namespaced_command) # Prepend the task, so Rake knows how to run it.
13
+
14
+ rake.standard_exception_handling do
15
+ rake.init("jets")
16
+ rake.load_rakefile
17
+ rake.top_level
18
+ end
19
+ end
20
+
21
+ # Useful for CLI.lookup.
22
+ def namespaced_commands
23
+ formatted_rake_tasks(true).map(&:first)
24
+ end
25
+
26
+ def formatted_rake_tasks(all=false)
27
+ rake_tasks(all).map do |t|
28
+ comment = "# #{t.comment}" if t.comment
29
+ [ t.name_with_args, comment ]
30
+ end
31
+ end
32
+
33
+ def rake_tasks(all=false)
34
+ require_rake
35
+
36
+ Rake::TaskManager.record_task_metadata = true
37
+ rake.instance_variable_set(:@name, "jets")
38
+ Jets::Commands::RakeTasks.load!
39
+ tasks = rake.tasks
40
+ tasks = tasks.select(&:comment) unless all
41
+ tasks
42
+ end
43
+
44
+ def help_message(namespaced_command)
45
+ task = rake_tasks(true).find { |t| t.name == namespaced_command }
46
+ message = "Help provided by rake task:\n\n"
47
+ message << "jets #{task.name_with_args.dup}\n"
48
+ message << " #{task.full_comment}"
49
+ message
50
+ end
51
+
52
+ private
53
+ def rake
54
+ Rake.application
55
+ end
56
+
57
+ def require_rake
58
+ require "rake" # Defer booting Rake until we know it's needed.
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,45 @@
1
+ require 'rake'
2
+
3
+ class Jets::Commands::RakeTasks
4
+ class << self
5
+ # Will only load the tasks once. Just in case the user has already loaded
6
+ # Jets rake tasks in their Rakefile. Example Rakefile that does this:
7
+ #
8
+ # require 'jets'
9
+ # Jets.load_tasks
10
+ #
11
+ @@loaded = false
12
+ def load!
13
+ return if @@loaded # prevent loading twice
14
+ Jets::Booter.require_bundle_gems # use bundler when in project folder
15
+
16
+ Jets::Commands::Db::Tasks.load!
17
+ load_webpacker_tasks
18
+
19
+ @@loaded = true
20
+ end
21
+
22
+ # Handles load errors gracefuly per Booter.required_bundle_gems comments.
23
+ def load_webpacker_tasks
24
+ begin
25
+ require "webpacker"
26
+ rescue LoadError
27
+ # puts "WARN: unable to load gem. #{$!}. Running with 'bundle exec' might fix this warning."
28
+ # Happens whne user calls jets help outside the jets project folder.
29
+ return
30
+ end
31
+
32
+ Webpacker::RakeTasks.load!
33
+ # Thanks: https://coderwall.com/p/qhdhgw/adding-a-post-execution-hook-to-the-rails-db-migrate-task
34
+ # Enchancing in case the user runs webpacker:install afterwards
35
+ # instead of jets new.
36
+ Rake::Task['webpacker:install'].enhance do
37
+ # FORCE from rake webpacker:install FORCE=1
38
+ # using ENV because rake webpacker:install is a rake task
39
+ args ||= []
40
+ args += ["--force"] if ENV['FORCE']
41
+ Jets::Commands::WebpackerTemplate.start(args)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,44 @@
1
+ require 'fileutils'
2
+ require 'colorize'
3
+ require 'active_support/core_ext/string'
4
+ require 'thor'
5
+ require 'bundler'
6
+
7
+ class Jets::Commands::Sequence < Thor::Group
8
+ include Thor::Actions
9
+
10
+ def self.source_root
11
+ File.expand_path("templates/skeleton", File.dirname(__FILE__))
12
+ end
13
+
14
+ private
15
+ def clone_project
16
+ unless git_installed?
17
+ abort "Unable to detect git installation on your system. Git needs to be installed in order to use the --repo option."
18
+ end
19
+
20
+ if File.exist?(project_name)
21
+ abort "The folder #{project_name} already exists."
22
+ else
23
+ run "git clone https://github.com/#{options[:repo]} #{project_name}"
24
+ end
25
+ confirm_jets_project
26
+ end
27
+
28
+ def confirm_jets_project
29
+ jets_project = File.exist?("#{project_name}/config/application.rb")
30
+ unless jets_project
31
+ puts "It does not look like the repo #{options[:repo]} is a jets project. Maybe double check that it is? Exited.".colorize(:red)
32
+ exit 1
33
+ end
34
+ end
35
+
36
+ def copy_project
37
+ puts "Creating new project called #{project_name}."
38
+ directory ".", project_name
39
+ end
40
+
41
+ def git_installed?
42
+ system("type git > /dev/null")
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ # The important methods in this class are stack_type, s3_bucket and first_run?
2
+ # We use stack_type and s3_bucket to get info for both the build and deploy CLI
3
+ # commands.
4
+ # first_run? will always make an API call.
5
+ module Jets::Commands::StackInfo
6
+ include Jets::AwsServices
7
+
8
+ def stack_type
9
+ first_run? ? :minimal : :full
10
+ end
11
+
12
+ def s3_bucket
13
+ return @s3_bucket if @s3_bucket
14
+
15
+ return nil if first_run?
16
+
17
+ resp = cfn.describe_stacks(stack_name: parent_stack_name)
18
+ output = resp.stacks[0].outputs.find {|o| o.output_key == 'S3Bucket'}
19
+ @s3_bucket = output.output_value # once an s3 bucket is found, cache it
20
+ end
21
+
22
+ # Always call API
23
+ def first_run?
24
+ !stack_exists?(parent_stack_name)
25
+ end
26
+
27
+ def parent_stack_name
28
+ Jets::Naming.parent_stack_name
29
+ end
30
+ end
@@ -0,0 +1,2 @@
1
+ # Example .env, meant to be updated.
2
+ # Variables in here are available and shared across all environments: development, production, etc.
@@ -0,0 +1,3 @@
1
+ # Example .env.development, meant to be updated.
2
+ ENV_DEVELOPMENT_KEY=example1
3
+ # DATABASE_URL=postgresql://dbuser:dbpass@localhost/<%= project_name %>_dev?pool=5
@@ -0,0 +1,3 @@
1
+ # Example .env.test, meant to be updated.
2
+ env_key1=env_value1
3
+ env_key2=env_value2
@@ -0,0 +1,14 @@
1
+ *.gem
2
+ .bundle
3
+ .byebug_history
4
+ .DS_Store
5
+ .env.*.deploy
6
+ .env.production
7
+ .env.staging
8
+ /node_modules
9
+ /public/packs
10
+ /public/packs-test
11
+ bundled
12
+ coverage
13
+ pkg
14
+ tmp
@@ -0,0 +1,27 @@
1
+ source "https://rubygems.org"
2
+
3
+ if File.exist?("dev.mode")
4
+ gem "jets", path: "#{ENV['HOME']}/environment/jets"
5
+ else
6
+ gem "jets", git: "https://github.com/tongueroo/jets.git", submodules: true
7
+ end
8
+
9
+ <% if @webpacker -%>
10
+ # Include webpacker if you are you are building html pages
11
+ gem "webpacker", git: "https://github.com/tongueroo/webpacker.git", branch: "jets"
12
+ <% end -%>
13
+ # Include pg gem if you are using ActiveRecord
14
+ gem "pg", "~> 0.21"
15
+
16
+ group :development, :test do
17
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
18
+ gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
19
+ gem 'shotgun'
20
+ gem 'rack'
21
+ end
22
+
23
+ group :test do
24
+ gem 'rspec' # rspec test group only or we get the "irb: warn: can't alias context from irb_context warning" when starting jets console
25
+ gem 'launchy'
26
+ gem 'capybara'
27
+ end
@@ -0,0 +1,7 @@
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
3
+ # web: jets server # port 8888
4
+
5
+ # Using Procfile to just start local dynamodb services for now.
6
+ # To start jets server for now use:
7
+ # jets server
@@ -0,0 +1,4 @@
1
+ # Starter Jets Project
2
+
3
+ This project demonstrates basic CRUD.
4
+
@@ -0,0 +1,2 @@
1
+ require 'jets'
2
+ Jets.load_tasks
@@ -0,0 +1,2 @@
1
+ class ApplicationController < Jets::Controller::Base
2
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ class ApplicationJob < Jets::Job::Base
2
+ end
@@ -0,0 +1,2 @@
1
+ class ApplicationItem < Dynomite::Item
2
+ end
@@ -0,0 +1,3 @@
1
+ class ApplicationRecord < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
6
+ <meta name="theme-color" content="#000000">
7
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
+ <title>Jets App</title>
9
+ <%%= javascript_pack_tag "application" %>
10
+ <%%= stylesheet_pack_tag "theme" %>
11
+ </head>
12
+ <body>
13
+ <section class="starter">
14
+ <div class="container">
15
+ <div class="row">
16
+ <div class="col-md-9 content-body">
17
+ <%% if @title %><h1><%%= @title %></h1><%% end %>
18
+ <%%= yield %>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </section>
23
+ </body>
24
+ </html>
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ # Figure out where this script is located.
6
+ PROJECTDIR="`dirname \"$0\"`"
7
+ PROJECTDIR="`cd \"$PROJECTDIR/..\" && pwd`"
8
+
9
+ unset BUNDLE_IGNORE_CONFIG
10
+ # When jets packages the app code it creates .bundle/config in the project root.
11
+ # We want that to be used.
12
+
13
+ # Run the actual app using the bundled Ruby interpreter, with Bundler activated.
14
+ if [ -n "$C9_USER" ]; then
15
+ exec ruby -rbundler/setup bin/ruby_server.rb
16
+ else
17
+ exec "$PROJECTDIR/bundled/rbenv/shims/ruby" -rbundler/setup "$PROJECTDIR/bin/ruby_server.rb"
18
+ fi
@@ -0,0 +1,2 @@
1
+ require 'jets'
2
+ Jets::RubyServer.run
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require "jets"
4
+ run Jets.application
@@ -0,0 +1,26 @@
1
+ Jets.application.configure do
2
+ config.project_name = "<%= project_name %>"
3
+ config.api_generator = <%= !!@options[:api] %>
4
+ # config.prewarm.rate = '30 minutes' # default is '30 minutes'
5
+ # config.prewarm.concurrency = 1 # default is 1
6
+ # config.env_extra = 2 # change also set this with JETS_ENV_EXTRA
7
+ # config.extra_autoload_paths = []
8
+
9
+ config.function.timeout = 10
10
+ # config.function.role = "arn:aws:iam::#{ENV['AWS_ACCOUNT_ID']}:role/service-role/pre-created"
11
+ # config.function.memory_size= 3008
12
+ # config.function.cors = true
13
+ config.function.environment = {
14
+ global_app_key1: "global_app_value1",
15
+ global_app_key2: "global_app_value2",
16
+ }
17
+ # More examples:
18
+ # config.function.dead_letter_queue = { target_arn: "arn" }
19
+ # config.function.vpc_config = {
20
+ # security_group_ids: [ "sg-1", "sg-2" ],
21
+ # subnet_ids: [ "subnet-1", "subnet-2" ]
22
+ # }
23
+ # The config.function settings to the CloudFormation Lambda Function properties.
24
+ # http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
25
+ # Underscored format can be used for keys to make it look more ruby-ish.
26
+ end
@@ -0,0 +1,27 @@
1
+ default: &default
2
+ adapter: postgresql
3
+ encoding: utf8
4
+ pool: <%%= ENV["DB_POOL"] || 5 %>
5
+ database: <%%= ENV['DB_NAME'] || '<%= project_name %>_dev' %>
6
+ username: <%%= ENV['DB_USER'] || ENV['USER'] %>
7
+ password: <%%= ENV['DB_PASS'] %>
8
+ host: <%%= ENV["DB_HOST"] %>
9
+ url: <%%= ENV['DATABASE_URL'] %> # takes higher precedence than other settings
10
+
11
+ development:
12
+ <<: *default
13
+ database: <%%= ENV['DB_NAME'] || '<%= project_name %>_dev' %>
14
+
15
+ test:
16
+ <<: *default
17
+ database: <%= project_name %>_test
18
+
19
+ staging:
20
+ <<: *default
21
+ database: <%= project_name %>_stag
22
+ url: <%%= ENV['DATABASE_URL'] %>
23
+
24
+ production:
25
+ <<: *default
26
+ database: <%= project_name %>_prod
27
+ url: <%%= ENV['DATABASE_URL'] %>
@@ -0,0 +1,25 @@
1
+ # Jets::Config.project_namespace is special value results in using the project namespace. Example :
2
+ # table_namespace: <%= Jets.config.project_namespace %>
3
+ # This is the default value.
4
+
5
+ development:
6
+ table_namespace: <%= Jets.config.table_namespace %>
7
+ # More examples:
8
+ # table_namespace: demo-dev
9
+
10
+ endpoint: http://localhost:8000 # comment out if want to test with real dynamodb
11
+ # on AWS. You can also set the DYNAMODB_ENDPOINT environment variable.
12
+ # You can also are actually deploying a development environment is to
13
+ # change bin/server and export DYNAMODB_ENDPOINT=http://localhost:8000 at the top
14
+ # there.
15
+
16
+ test:
17
+ # table_namespace: proj # do not include the env
18
+ endpoint: http://localhost:8000
19
+ table_namespace: <%= Jets.config.table_namespace %>
20
+
21
+ staging:
22
+ table_namespace: <%= Jets.config.table_namespace %>
23
+
24
+ production:
25
+ table_namespace: <%= Jets.config.table_namespace %>
@@ -0,0 +1,8 @@
1
+ Jets.application.routes.draw do
2
+ # Default homepage. This should be replaced.
3
+ root "jets/welcome#index"
4
+
5
+ # Required for API Gateway to serve static utf8 content out of public folder.
6
+ # Replace with your own controller to customize.
7
+ any "*catchall", to: "jets/public#show"
8
+ end
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>