jets 0.10.4 → 1.0.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 +4 -4
- data/CHANGELOG.md +16 -0
- data/Gemfile.lock +12 -12
- data/README.md +4 -2
- data/exe/jets +2 -2
- data/lib/jets/application.rb +41 -5
- data/lib/jets/aws_info.rb +20 -0
- data/lib/jets/builders/code_builder.rb +201 -296
- data/lib/jets/builders/gem_replacer.rb +1 -1
- data/lib/jets/builders/handler_generator.rb +62 -43
- data/lib/jets/builders/md5.rb +55 -0
- data/lib/jets/builders/md5_zip.rb +60 -0
- data/lib/jets/builders/rack_packager.rb +29 -0
- data/lib/jets/builders/rackup_wrappers/rackup +23 -0
- data/lib/jets/builders/rackup_wrappers/rackup.rb +7 -0
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +14 -0
- data/lib/jets/builders/reconfigure_rails.rb +99 -0
- data/lib/jets/builders/ruby_packager.rb +198 -0
- data/lib/jets/builders/{deducer.rb → shim_vars/app.rb} +14 -10
- data/lib/jets/builders/shim_vars/base.rb +24 -0
- data/lib/jets/builders/{shared_deducer.rb → shim_vars/shared.rb} +4 -3
- data/lib/jets/builders/shim_vars.rb +5 -0
- data/lib/jets/builders/templates/handler.js +9 -0
- data/lib/jets/builders/templates/shim.js +271 -0
- data/lib/jets/builders/tidy.rb +80 -0
- data/lib/jets/builders/util.rb +28 -0
- data/lib/jets/builders.rb +8 -2
- data/lib/jets/cfn/builders/function_builder.rb +0 -10
- data/lib/jets/cfn/builders/parent_builder.rb +7 -6
- data/lib/jets/cfn/ship.rb +9 -103
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cfn.rb +1 -0
- data/lib/jets/commands/build.rb +17 -19
- data/lib/jets/commands/deploy.rb +2 -0
- data/lib/jets/commands/help/deploy.md +2 -2
- data/lib/jets/commands/help/import/rack.md +13 -0
- data/lib/jets/commands/help/import/rails.md +11 -0
- data/lib/jets/commands/import/base.rb +39 -0
- data/lib/jets/commands/import/rack.rb +16 -0
- data/lib/jets/commands/import/rail.rb +68 -0
- data/lib/jets/commands/import/sequence.rb +68 -0
- data/lib/jets/commands/import.rb +14 -0
- data/lib/jets/commands/main.rb +2 -1
- data/lib/jets/commands/new.rb +1 -1
- data/lib/jets/commands/sequence.rb +26 -22
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +5 -2
- data/lib/jets/commands/templates/skeleton/README.md +11 -2
- data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +1 -1
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +1 -1
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +12 -5
- data/lib/jets/commands/templates/skeleton/config/database.yml.tt +5 -1
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +3 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +5 -0
- data/lib/jets/commands/templates/skeleton/public/{images/favicon.ico → favicon.ico} +0 -0
- data/lib/jets/commands/templates/skeleton/spec/controllers/posts_controller_spec.rb +1 -3
- data/lib/jets/commands.rb +1 -0
- data/lib/jets/controller/base.rb +1 -1
- data/lib/jets/controller/layout.rb +3 -0
- data/lib/jets/controller/params.rb +3 -2
- data/lib/jets/controller/request.rb +4 -0
- data/lib/jets/core.rb +20 -18
- data/lib/jets/core_ext/kernel.rb +9 -5
- data/lib/jets/default/application.rb +1 -1
- data/lib/jets/inflections.rb +16 -8
- data/lib/jets/internal/app/controllers/jets/public_controller.rb +17 -22
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +15 -0
- data/lib/jets/naming.rb +0 -23
- data/lib/jets/rack/hash_converter.rb +25 -0
- data/lib/jets/rack/request.rb +71 -0
- data/lib/jets/rack/server.rb +47 -0
- data/lib/jets/rack.rb +7 -0
- data/lib/jets/rails_overrides/asset_tag_helper.rb +12 -11
- data/lib/jets/resource/function.rb +13 -5
- data/lib/jets/router.rb +1 -1
- data/lib/jets/ruby_server.rb +63 -18
- data/lib/jets/server/api_gateway.rb +1 -1
- data/lib/jets/stack/resource.rb +3 -1
- data/lib/jets/version.rb +1 -1
- data/lib/jets.rb +3 -5
- metadata +34 -9
- data/lib/jets/builders/node-hello.js +0 -73
- data/lib/jets/builders/node-shim.js +0 -182
- data/lib/jets/internal/app/controllers/jets/public_controller/python/show.py +0 -47
- data/lib/jets/internal/app/controllers/jets/public_controller/python/show.pyc +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8280c4dd8fd0e5dcf740e5cbba920c4b60bb141929635940592f9bacb576c6a9
|
|
4
|
+
data.tar.gz: ae6388ea520d67ae42b72cd8d479c6964cf4faf5ae62fe486c4ff107de395fe4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b3db1c42d1671cb0aa18c36f0e91cd32c78bd89c12c7e1f7a84f66a42d804d192f9a540954ebfed14e932c08fa6890076ed89f6912313527b1e86f63859886ff
|
|
7
|
+
data.tar.gz: 43681d533614ab99a940ae0495fa5aa21eba0b4e36b54bcda11d72eb03398af1acce0aebb0a771bd91a2916bfde078ad8e140d4d6f85889fb08c9c1723eb5305
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
|
|
5
5
|
|
|
6
|
+
## [1.0.0]
|
|
7
|
+
- Mega Mode: Rails Support, Rack Support
|
|
8
|
+
- jets import:rails command
|
|
9
|
+
- Lazy Loading Support
|
|
10
|
+
- MySQL support. MySQL is default for jets new command.
|
|
11
|
+
- Separate Environment configuration support
|
|
12
|
+
- Default function timeout 30s now and 60s for jobs
|
|
13
|
+
- Improve config/inflections.yml support
|
|
14
|
+
- Improve shim: organized code
|
|
15
|
+
- Improve static asset serving
|
|
16
|
+
- Improve deploy performance: lazy loading, separate zip files, and only reupload if md5 checksums change.
|
|
17
|
+
- Improve handler generation: ShimVars concept.
|
|
18
|
+
- Improve code builder: Tidy class
|
|
19
|
+
- Improve cfn builder: separate out cfn upload
|
|
20
|
+
- Improve Jets IO buffer handling
|
|
21
|
+
|
|
6
22
|
## [0.10.4]
|
|
7
23
|
- Merge pull request #51 from tongueroo/fix-aws-account: fix aws account lookup when ~/.aws/config not configured
|
|
8
24
|
- deprecate config.api_mode for api.mode = "api"
|
data/Gemfile.lock
CHANGED
|
@@ -11,7 +11,7 @@ GIT
|
|
|
11
11
|
PATH
|
|
12
12
|
remote: .
|
|
13
13
|
specs:
|
|
14
|
-
jets (0.
|
|
14
|
+
jets (1.0.0)
|
|
15
15
|
actionpack (>= 5.2.1)
|
|
16
16
|
actionview (>= 5.2.1)
|
|
17
17
|
activerecord (>= 5.2.1)
|
|
@@ -65,32 +65,32 @@ GEM
|
|
|
65
65
|
tzinfo (~> 1.1)
|
|
66
66
|
arel (9.0.0)
|
|
67
67
|
aws-eventstream (1.0.1)
|
|
68
|
-
aws-partitions (1.
|
|
69
|
-
aws-sdk-cloudformation (1.
|
|
68
|
+
aws-partitions (1.106.0)
|
|
69
|
+
aws-sdk-cloudformation (1.10.0)
|
|
70
70
|
aws-sdk-core (~> 3, >= 3.26.0)
|
|
71
71
|
aws-sigv4 (~> 1.0)
|
|
72
|
-
aws-sdk-cloudwatchlogs (1.
|
|
72
|
+
aws-sdk-cloudwatchlogs (1.10.0)
|
|
73
73
|
aws-sdk-core (~> 3, >= 3.26.0)
|
|
74
74
|
aws-sigv4 (~> 1.0)
|
|
75
|
-
aws-sdk-core (3.
|
|
75
|
+
aws-sdk-core (3.35.0)
|
|
76
76
|
aws-eventstream (~> 1.0)
|
|
77
77
|
aws-partitions (~> 1.0)
|
|
78
78
|
aws-sigv4 (~> 1.0)
|
|
79
79
|
jmespath (~> 1.0)
|
|
80
|
-
aws-sdk-dynamodb (1.
|
|
80
|
+
aws-sdk-dynamodb (1.15.0)
|
|
81
81
|
aws-sdk-core (~> 3, >= 3.26.0)
|
|
82
82
|
aws-sigv4 (~> 1.0)
|
|
83
|
-
aws-sdk-kms (1.
|
|
83
|
+
aws-sdk-kms (1.11.0)
|
|
84
84
|
aws-sdk-core (~> 3, >= 3.26.0)
|
|
85
85
|
aws-sigv4 (~> 1.0)
|
|
86
|
-
aws-sdk-lambda (1.
|
|
86
|
+
aws-sdk-lambda (1.13.0)
|
|
87
87
|
aws-sdk-core (~> 3, >= 3.26.0)
|
|
88
88
|
aws-sigv4 (~> 1.0)
|
|
89
|
-
aws-sdk-s3 (1.
|
|
89
|
+
aws-sdk-s3 (1.23.0)
|
|
90
90
|
aws-sdk-core (~> 3, >= 3.26.0)
|
|
91
91
|
aws-sdk-kms (~> 1)
|
|
92
92
|
aws-sigv4 (~> 1.0)
|
|
93
|
-
aws-sdk-sns (1.
|
|
93
|
+
aws-sdk-sns (1.7.0)
|
|
94
94
|
aws-sdk-core (~> 3, >= 3.26.0)
|
|
95
95
|
aws-sigv4 (~> 1.0)
|
|
96
96
|
aws-sigv4 (1.0.3)
|
|
@@ -105,12 +105,12 @@ GEM
|
|
|
105
105
|
gems (1.1.1)
|
|
106
106
|
json
|
|
107
107
|
hashie (3.6.0)
|
|
108
|
-
i18n (1.1.
|
|
108
|
+
i18n (1.1.1)
|
|
109
109
|
concurrent-ruby (~> 1.0)
|
|
110
110
|
jmespath (1.4.0)
|
|
111
111
|
json (2.1.0)
|
|
112
112
|
kramdown (1.17.0)
|
|
113
|
-
loofah (2.2.
|
|
113
|
+
loofah (2.2.3)
|
|
114
114
|
crass (~> 1.0.2)
|
|
115
115
|
nokogiri (>= 1.5.9)
|
|
116
116
|
memoist (0.16.0)
|
data/README.md
CHANGED
|
@@ -87,12 +87,12 @@ app/jobs/hard_job.rb:
|
|
|
87
87
|
class HardJob < ApplicationJob
|
|
88
88
|
rate "10 hours" # every 10 hours
|
|
89
89
|
def dig
|
|
90
|
-
|
|
90
|
+
puts "done digging"
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
cron "0 */12 * * ? *" # every 12 hours
|
|
94
94
|
def lift
|
|
95
|
-
|
|
95
|
+
puts "done lifting"
|
|
96
96
|
end
|
|
97
97
|
end
|
|
98
98
|
```
|
|
@@ -146,3 +146,5 @@ For more documentation, check out the official docs: [Ruby on Jets](http://rubyo
|
|
|
146
146
|
* [Jets Tutorial IAM Policies Part 5](https://blog.boltops.com/2018/09/11/jets-tutorial-iam-policies-part-5)
|
|
147
147
|
* [Jets Tutorial Function Properties Part 6](https://blog.boltops.com/2018/09/12/jets-tutorial-function-properties-part-6)
|
|
148
148
|
* [Jets Tutorial Extra Environments Part 7](https://blog.boltops.com/2018/09/13/jets-tutorial-extra-environments-part-7)
|
|
149
|
+
* [Jets Tutorial Different Environments Part 8](https://blog.boltops.com/2018/09/26/jets-tutorial-different-environments-part-8)
|
|
150
|
+
* [Jets Tutorial Polymorphic Support Part 9](https://blog.boltops.com/2018/09/27/jets-tutorial-polymorphic-support-part-9)
|
data/exe/jets
CHANGED
data/lib/jets/application.rb
CHANGED
|
@@ -11,8 +11,8 @@ class Jets::Application
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def setup!
|
|
14
|
-
load_inflections
|
|
15
14
|
load_configs # load config object so following methods can use it
|
|
15
|
+
load_inflections
|
|
16
16
|
setup_auto_load_paths
|
|
17
17
|
load_routes
|
|
18
18
|
end
|
|
@@ -40,11 +40,14 @@ class Jets::Application
|
|
|
40
40
|
config.inflections.irregular = {}
|
|
41
41
|
|
|
42
42
|
config.assets = ActiveSupport::OrderedOptions.new
|
|
43
|
-
config.assets.folders = %w[
|
|
43
|
+
config.assets.folders = %w[public]
|
|
44
44
|
config.assets.base_url = nil # IE: https://cloudfront.com/my/base/path
|
|
45
45
|
config.assets.max_age = 3600
|
|
46
46
|
config.assets.cache_control = nil # IE: public, max-age=3600 , max_age is a shorter way to set cache_control.
|
|
47
47
|
|
|
48
|
+
config.ruby = ActiveSupport::OrderedOptions.new
|
|
49
|
+
config.ruby.lazy_load = true # also set in config/environments files
|
|
50
|
+
|
|
48
51
|
config
|
|
49
52
|
end
|
|
50
53
|
memoize :config
|
|
@@ -77,6 +80,15 @@ class Jets::Application
|
|
|
77
80
|
set_aliases!
|
|
78
81
|
normalize_env_vars!
|
|
79
82
|
load_db_config
|
|
83
|
+
load_environments_config
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def load_environments_config
|
|
87
|
+
env_file = "#{Jets.root}config/environments/#{Jets.env}.rb"
|
|
88
|
+
if File.exist?(env_file)
|
|
89
|
+
code = IO.read(env_file)
|
|
90
|
+
instance_eval(code)
|
|
91
|
+
end
|
|
80
92
|
end
|
|
81
93
|
|
|
82
94
|
# Use the shorter name in stack names, but use the full name when it
|
|
@@ -103,12 +115,25 @@ class Jets::Application
|
|
|
103
115
|
|
|
104
116
|
config.project_namespace = Jets.project_namespace
|
|
105
117
|
|
|
106
|
-
# Must set default iam_policy here instead of `def config` because we
|
|
107
|
-
#
|
|
118
|
+
# Must set default iam_policy here instead of `def config` because we project_namespace
|
|
119
|
+
# must have been set and if we call it from `def config` we get an infinite loop
|
|
120
|
+
set_iam_policy
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def set_iam_policy
|
|
108
124
|
config.iam_policy ||= self.class.default_iam_policy
|
|
109
125
|
config.managed_policy_definitions ||= [] # default empty
|
|
110
126
|
end
|
|
111
127
|
|
|
128
|
+
# After the mimimal template gets build, we need to reload it for the full stack
|
|
129
|
+
# creation. This is confusing to follow. Think we need to clean up the Jets.application
|
|
130
|
+
# singleton and make it more explicit?
|
|
131
|
+
def reload_iam_policy!
|
|
132
|
+
config.iam_policy = nil
|
|
133
|
+
config.managed_policy_definitions = nil
|
|
134
|
+
set_iam_policy
|
|
135
|
+
end
|
|
136
|
+
|
|
112
137
|
def self.default_iam_policy
|
|
113
138
|
project_namespace = Jets.project_namespace
|
|
114
139
|
logs = {
|
|
@@ -116,7 +141,18 @@ class Jets::Application
|
|
|
116
141
|
effect: "Allow",
|
|
117
142
|
resource: "arn:aws:logs:#{Jets.aws.region}:#{Jets.aws.account}:log-group:/aws/lambda/#{project_namespace}-*",
|
|
118
143
|
}
|
|
119
|
-
|
|
144
|
+
s3_bucket = Jets.aws.s3_bucket
|
|
145
|
+
s3_readonly = {
|
|
146
|
+
action: ["s3:Get*", "s3:List*"],
|
|
147
|
+
effect: "Allow",
|
|
148
|
+
resource: "arn:aws:s3:::#{s3_bucket}*",
|
|
149
|
+
}
|
|
150
|
+
s3_bucket = {
|
|
151
|
+
action: ["s3:ListAllMyBuckets", "s3:HeadBucket"],
|
|
152
|
+
effect: "Allow",
|
|
153
|
+
resource: "arn:aws:s3:::*", # scoped to all buckets
|
|
154
|
+
}
|
|
155
|
+
policies = [logs, s3_readonly, s3_bucket]
|
|
120
156
|
|
|
121
157
|
if Jets::Stack.has_resources?
|
|
122
158
|
cloudformation = {
|
data/lib/jets/aws_info.rb
CHANGED
|
@@ -52,6 +52,26 @@ module Jets
|
|
|
52
52
|
end
|
|
53
53
|
memoize :account
|
|
54
54
|
|
|
55
|
+
# If bucket does not exist, do not use the cache value and check for the bucket again.
|
|
56
|
+
# This is because we can build the app before deploying it for the first time.
|
|
57
|
+
# The deploy sequence ensure an minimal stack exists and will return a s3 bucket
|
|
58
|
+
# value for real deployments though, just not for the `jets build` only command.
|
|
59
|
+
BUCKET_DOES_NOT_YET_EXIST = "bucket-does-not-yet-exist" # use const to save from misspellings
|
|
60
|
+
@@s3_bucket = BUCKET_DOES_NOT_YET_EXIST
|
|
61
|
+
def s3_bucket
|
|
62
|
+
return "fake-test-s3-bucket" if ENV['TEST']
|
|
63
|
+
return @@s3_bucket unless @@s3_bucket == BUCKET_DOES_NOT_YET_EXIST
|
|
64
|
+
|
|
65
|
+
resp = cfn.describe_stacks(stack_name: Jets::Naming.parent_stack_name)
|
|
66
|
+
stack = resp.stacks.first
|
|
67
|
+
output = stack["outputs"].find { |o| o["output_key"] == "S3Bucket" }
|
|
68
|
+
@@s3_bucket = output["output_value"] # s3_bucket
|
|
69
|
+
rescue
|
|
70
|
+
# rescuing all exceptions in case here
|
|
71
|
+
# Here are the known ones: Aws::CloudFormation::Errors::ValidationError, Aws::CloudFormation::Errors::InvalidClientTokenId
|
|
72
|
+
BUCKET_DOES_NOT_YET_EXIST
|
|
73
|
+
end
|
|
74
|
+
|
|
55
75
|
def test?
|
|
56
76
|
ENV['TEST'] || ENV['CIRCLECI']
|
|
57
77
|
end
|