jets 1.1.5 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/Gemfile.lock +10 -6
  4. data/README/testing.md +5 -1
  5. data/jets.gemspec +1 -0
  6. data/lib/jets.rb +5 -1
  7. data/lib/jets/application.rb +39 -19
  8. data/lib/jets/aws_services.rb +16 -10
  9. data/lib/jets/aws_services/stack_status.rb +7 -0
  10. data/lib/jets/booter.rb +6 -2
  11. data/lib/jets/builders/code_builder.rb +14 -0
  12. data/lib/jets/builders/handler_generator.rb +15 -0
  13. data/lib/jets/builders/shim_vars/app.rb +4 -3
  14. data/lib/jets/builders/shim_vars/shared.rb +8 -4
  15. data/lib/jets/builders/templates/shim.js +7 -3
  16. data/lib/jets/camelizer.rb +2 -1
  17. data/lib/jets/cfn/builders.rb +0 -1
  18. data/lib/jets/cfn/builders/api_deployment_builder.rb +27 -0
  19. data/lib/jets/cfn/builders/api_gateway_builder.rb +22 -2
  20. data/lib/jets/cfn/ship.rb +38 -6
  21. data/lib/jets/commands/call.rb +0 -1
  22. data/lib/jets/commands/call/guesser.rb +0 -3
  23. data/lib/jets/commands/clean/log.rb +18 -0
  24. data/lib/jets/commands/console.rb +1 -1
  25. data/lib/jets/commands/import/sequence.rb +2 -3
  26. data/lib/jets/commands/runner.rb +1 -1
  27. data/lib/jets/commands/sequence.rb +0 -1
  28. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +11 -0
  29. data/lib/jets/commands/url.rb +32 -7
  30. data/lib/jets/controller/base.rb +21 -5
  31. data/lib/jets/controller/layout.rb +0 -3
  32. data/lib/jets/controller/middleware/local/api_gateway.rb +2 -5
  33. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +2 -2
  34. data/lib/jets/controller/params.rb +42 -10
  35. data/lib/jets/controller/rack/adapter.rb +5 -2
  36. data/lib/jets/controller/rack/env.rb +17 -8
  37. data/lib/jets/controller/renderers/rack_renderer.rb +1 -1
  38. data/lib/jets/controller/rendering.rb +4 -1
  39. data/lib/jets/core.rb +8 -16
  40. data/lib/jets/internal/app/functions/jets/base_path.rb +153 -0
  41. data/lib/jets/klass.rb +38 -5
  42. data/lib/jets/lambda/dsl.rb +0 -2
  43. data/lib/jets/mega/request.rb +44 -13
  44. data/lib/jets/mega/request/source.rb +21 -0
  45. data/lib/jets/middleware/configurator.rb +1 -1
  46. data/lib/jets/middleware/default_stack.rb +2 -2
  47. data/lib/jets/resource.rb +1 -0
  48. data/lib/jets/resource/api_gateway.rb +5 -3
  49. data/lib/jets/resource/api_gateway/base_path.rb +5 -0
  50. data/lib/jets/resource/api_gateway/base_path/function.rb +42 -0
  51. data/lib/jets/resource/api_gateway/base_path/mapping.rb +44 -0
  52. data/lib/jets/resource/api_gateway/base_path/role.rb +76 -0
  53. data/lib/jets/resource/api_gateway/cors.rb +1 -1
  54. data/lib/jets/resource/api_gateway/deployment.rb +9 -5
  55. data/lib/jets/resource/api_gateway/domain_name.rb +56 -0
  56. data/lib/jets/resource/api_gateway/method.rb +3 -4
  57. data/lib/jets/resource/api_gateway/resource.rb +4 -3
  58. data/lib/jets/resource/api_gateway/rest_api.rb +42 -14
  59. data/lib/jets/resource/api_gateway/rest_api/change_detection.rb +42 -0
  60. data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +59 -0
  61. data/lib/jets/resource/api_gateway/rest_api/routes.rb +127 -0
  62. data/lib/jets/resource/child_stack/api_deployment.rb +5 -1
  63. data/lib/jets/resource/function.rb +3 -20
  64. data/lib/jets/resource/function/environment.rb +23 -0
  65. data/lib/jets/resource/iam/application_role.rb +1 -1
  66. data/lib/jets/resource/route53.rb +3 -0
  67. data/lib/jets/resource/route53/record_set.rb +70 -0
  68. data/lib/jets/router.rb +2 -0
  69. data/lib/jets/ruby_server.rb +6 -3
  70. data/lib/jets/stack.rb +1 -3
  71. data/lib/jets/stack/main/dsl.rb +1 -1
  72. data/lib/jets/stack/main/extensions/lambda.rb +4 -2
  73. data/lib/jets/turbine.rb +0 -3
  74. data/lib/jets/version.rb +1 -1
  75. data/vendor/jets-gems/lib/jets/gems.rb +1 -0
  76. data/vendor/jets-gems/lib/jets/gems/agree.rb +41 -0
  77. data/vendor/jets-gems/lib/jets/gems/check.rb +15 -2
  78. metadata +30 -2
@@ -17,7 +17,7 @@ class Jets::Stack
17
17
  end
18
18
 
19
19
  def self.included(base)
20
- base_path = "#{Jets.root}/app/shared/extensions"
20
+ base_path = "#{Jets.root}app/shared/extensions"
21
21
  ActiveSupport::Dependencies.autoload_paths += [base_path]
22
22
 
23
23
  Dir.glob("#{base_path}/**/*.rb").each do |path|
@@ -21,8 +21,10 @@ module Jets::Stack::Main::Dsl
21
21
  def function(id, props={})
22
22
  # Required: code, handler, role, runtime Docs: https://amzn.to/2pdot7S
23
23
  meth = id.to_s.underscore
24
+ class_namespace = self.to_s.underscore.gsub('/','-') # IE: Jets::Domain => jets-domain
25
+ function_name = "#{Jets.config.project_namespace}-#{class_namespace}-#{id.to_s.underscore}"
24
26
  defaults = {
25
- function_name: "#{Jets.config.project_namespace}-#{id.to_s.underscore}",
27
+ function_name: function_name,
26
28
  code: {
27
29
  s3_bucket: "!Ref S3Bucket",
28
30
  s3_key: code_s3_key
@@ -52,7 +54,7 @@ module Jets::Stack::Main::Dsl
52
54
  def node_function(id, props={})
53
55
  meth = id.to_s.underscore
54
56
  props[:handler] ||= "#{meth}.handler" # default python convention
55
- props[:runtime] = "node8.10"
57
+ props[:runtime] = "nodejs8.10"
56
58
  function(id, props)
57
59
  end
58
60
 
@@ -1,6 +1,3 @@
1
- require 'active_support'
2
- require 'active_support/core_ext'
3
-
4
1
  module Jets
5
2
  class Turbine
6
3
  class_attribute :initializers
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "1.1.5"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -2,6 +2,7 @@ require "jets/gems/version"
2
2
 
3
3
  module Jets
4
4
  module Gems
5
+ autoload :Agree, 'jets/gems/agree'
5
6
  autoload :Check, 'jets/gems/check'
6
7
  autoload :Exist, 'jets/gems/exist'
7
8
  autoload :Extract, 'jets/gems/extract'
@@ -0,0 +1,41 @@
1
+ module Jets::Gems
2
+ class Agree
3
+ def initialize
4
+ @agree_file = "#{ENV['HOME']}/.jets/agree"
5
+ end
6
+
7
+ # Only prompts if hasnt prompted before and saved a ~/.jets/agree file
8
+ def prompt
9
+ return if File.exist?(@agree_file)
10
+
11
+ puts "The Jets project contains binary gems that are not yet available in your gems source. You can help make Jets and the community better by reporting the missing binary gems. Reported gems get built more quickly. BoltOps takes privacy seriously and only collects anonymous non-identifiable data. You will only be asked this once."
12
+ puts "Do you want send reporting data to BoltOps? (Y/n)?"
13
+ answer = $stdin.gets.strip
14
+ value = answer =~ /y/i ? 'yes' : 'no'
15
+
16
+ FileUtils.mkdir_p(File.dirname(@agree_file))
17
+ IO.write(@agree_file, value)
18
+ end
19
+
20
+ def yes?
21
+ File.exist?(@agree_file) && IO.read(@agree_file).strip == 'yes'
22
+ end
23
+
24
+ def no?
25
+ File.exist?(@agree_file) && IO.read(@agree_file).strip == 'no'
26
+ end
27
+
28
+ def yes!
29
+ write_file("yes")
30
+ end
31
+
32
+ def no!
33
+ write_file("no")
34
+ end
35
+
36
+ def write_file(content)
37
+ FileUtils.mkdir_p(File.dirname(@agree_file))
38
+ IO.write(@agree_file, content)
39
+ end
40
+ end
41
+ end
@@ -46,7 +46,9 @@ module Jets::Gems
46
46
  # Better to error now than deploy a broken package to AWS Lambda.
47
47
  # Provide users with message about using their own lambdagems source.
48
48
  puts missing_message
49
- Report.missing(@missing_gems)
49
+
50
+ agree.prompt
51
+ Report.missing(@missing_gems) if agree.yes?
50
52
  exit 1
51
53
  end
52
54
 
@@ -72,15 +74,26 @@ Your current lambdagems sources:
72
74
  Jets is unable to build a deployment package that will work on AWS Lambda without the required pre-compiled gems. To remedy this, you can:
73
75
 
74
76
  * Build the gem yourself and add it to your own custom lambdagems sources. Refer to the Lambda Gems Docs: http://rubyonjets.com/docs/lambdagems
75
- * Wait until it added to lambdagems.com. No need to report this to us, as we've already been notified.
76
77
  * Use another gem that does not require compilation.
78
+ * Wait until it added to lambdagems.com.
79
+ <% if agree.yes? -%>
80
+ * No need to report this to us, as we've already been notified.
81
+ <% elsif agree.no? -%>
82
+ * You have choosen not to report data to lambdagems so we will not be notified about these missing gems. If you change your mind you can edit ~/.jets/agree
83
+ <% end -%>
77
84
 
78
85
  Compiled gems usually take some time to figure out how to build as they each depend on different libraries and packages.
86
+
79
87
  EOL
80
88
  erb = ERB.new(template, nil, '-') # trim mode https://stackoverflow.com/questions/4632879/erb-template-removing-the-trailing-line
81
89
  erb.result(binding)
82
90
  end
83
91
 
92
+ def agree
93
+ Agree.new
94
+ end
95
+ memoize :agree
96
+
84
97
  # If there are subfolders compiled_gem_paths might have files deeper
85
98
  # in the directory tree. So lets grab the gem name and figure out the
86
99
  # unique paths of the compiled gems from there.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-28 00:00:00.000000000 Z
11
+ date: 2018-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 5.2.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-sdk-apigateway
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: aws-sdk-cloudformation
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -627,6 +641,7 @@ files:
627
641
  - lib/jets/inflections.rb
628
642
  - lib/jets/internal/app/controllers/jets/public_controller.rb
629
643
  - lib/jets/internal/app/controllers/jets/rack_controller.rb
644
+ - lib/jets/internal/app/functions/jets/base_path.rb
630
645
  - lib/jets/internal/app/jobs/jets/preheat_job.rb
631
646
  - lib/jets/io.rb
632
647
  - lib/jets/job.rb
@@ -643,6 +658,7 @@ files:
643
658
  - lib/jets/mega.rb
644
659
  - lib/jets/mega/hash_converter.rb
645
660
  - lib/jets/mega/request.rb
661
+ - lib/jets/mega/request/source.rb
646
662
  - lib/jets/middleware.rb
647
663
  - lib/jets/middleware/configurator.rb
648
664
  - lib/jets/middleware/default_stack.rb
@@ -668,11 +684,19 @@ files:
668
684
  - lib/jets/rdoc.rb
669
685
  - lib/jets/resource.rb
670
686
  - lib/jets/resource/api_gateway.rb
687
+ - lib/jets/resource/api_gateway/base_path.rb
688
+ - lib/jets/resource/api_gateway/base_path/function.rb
689
+ - lib/jets/resource/api_gateway/base_path/mapping.rb
690
+ - lib/jets/resource/api_gateway/base_path/role.rb
671
691
  - lib/jets/resource/api_gateway/cors.rb
672
692
  - lib/jets/resource/api_gateway/deployment.rb
693
+ - lib/jets/resource/api_gateway/domain_name.rb
673
694
  - lib/jets/resource/api_gateway/method.rb
674
695
  - lib/jets/resource/api_gateway/resource.rb
675
696
  - lib/jets/resource/api_gateway/rest_api.rb
697
+ - lib/jets/resource/api_gateway/rest_api/change_detection.rb
698
+ - lib/jets/resource/api_gateway/rest_api/logical_id.rb
699
+ - lib/jets/resource/api_gateway/rest_api/routes.rb
676
700
  - lib/jets/resource/associated.rb
677
701
  - lib/jets/resource/base.rb
678
702
  - lib/jets/resource/child_stack.rb
@@ -687,6 +711,7 @@ files:
687
711
  - lib/jets/resource/events.rb
688
712
  - lib/jets/resource/events/rule.rb
689
713
  - lib/jets/resource/function.rb
714
+ - lib/jets/resource/function/environment.rb
690
715
  - lib/jets/resource/iam.rb
691
716
  - lib/jets/resource/iam/application_role.rb
692
717
  - lib/jets/resource/iam/base_role_definition.rb
@@ -696,6 +721,8 @@ files:
696
721
  - lib/jets/resource/iam/policy_document.rb
697
722
  - lib/jets/resource/permission.rb
698
723
  - lib/jets/resource/replacer.rb
724
+ - lib/jets/resource/route53.rb
725
+ - lib/jets/resource/route53/record_set.rb
699
726
  - lib/jets/resource/s3.rb
700
727
  - lib/jets/resource/sns.rb
701
728
  - lib/jets/resource/standardizer.rb
@@ -774,6 +801,7 @@ files:
774
801
  - vendor/jets-gems/jets-gems.gemspec
775
802
  - vendor/jets-gems/lib/jets-gems.rb
776
803
  - vendor/jets-gems/lib/jets/gems.rb
804
+ - vendor/jets-gems/lib/jets/gems/agree.rb
777
805
  - vendor/jets-gems/lib/jets/gems/check.rb
778
806
  - vendor/jets-gems/lib/jets/gems/exist.rb
779
807
  - vendor/jets-gems/lib/jets/gems/extract.rb