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,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 @@
|
|
|
1
|
+
pack
|
|
@@ -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,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,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
|
|
File without changes
|
|
@@ -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>
|