jets 0.10.4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|