jets 1.1.5 → 1.2.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 +7 -0
- data/Gemfile.lock +10 -6
- data/README/testing.md +5 -1
- data/jets.gemspec +1 -0
- data/lib/jets.rb +5 -1
- data/lib/jets/application.rb +39 -19
- data/lib/jets/aws_services.rb +16 -10
- data/lib/jets/aws_services/stack_status.rb +7 -0
- data/lib/jets/booter.rb +6 -2
- data/lib/jets/builders/code_builder.rb +14 -0
- data/lib/jets/builders/handler_generator.rb +15 -0
- data/lib/jets/builders/shim_vars/app.rb +4 -3
- data/lib/jets/builders/shim_vars/shared.rb +8 -4
- data/lib/jets/builders/templates/shim.js +7 -3
- data/lib/jets/camelizer.rb +2 -1
- data/lib/jets/cfn/builders.rb +0 -1
- data/lib/jets/cfn/builders/api_deployment_builder.rb +27 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +22 -2
- data/lib/jets/cfn/ship.rb +38 -6
- data/lib/jets/commands/call.rb +0 -1
- data/lib/jets/commands/call/guesser.rb +0 -3
- data/lib/jets/commands/clean/log.rb +18 -0
- data/lib/jets/commands/console.rb +1 -1
- data/lib/jets/commands/import/sequence.rb +2 -3
- data/lib/jets/commands/runner.rb +1 -1
- data/lib/jets/commands/sequence.rb +0 -1
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +11 -0
- data/lib/jets/commands/url.rb +32 -7
- data/lib/jets/controller/base.rb +21 -5
- data/lib/jets/controller/layout.rb +0 -3
- data/lib/jets/controller/middleware/local/api_gateway.rb +2 -5
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +2 -2
- data/lib/jets/controller/params.rb +42 -10
- data/lib/jets/controller/rack/adapter.rb +5 -2
- data/lib/jets/controller/rack/env.rb +17 -8
- data/lib/jets/controller/renderers/rack_renderer.rb +1 -1
- data/lib/jets/controller/rendering.rb +4 -1
- data/lib/jets/core.rb +8 -16
- data/lib/jets/internal/app/functions/jets/base_path.rb +153 -0
- data/lib/jets/klass.rb +38 -5
- data/lib/jets/lambda/dsl.rb +0 -2
- data/lib/jets/mega/request.rb +44 -13
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware/configurator.rb +1 -1
- data/lib/jets/middleware/default_stack.rb +2 -2
- data/lib/jets/resource.rb +1 -0
- data/lib/jets/resource/api_gateway.rb +5 -3
- data/lib/jets/resource/api_gateway/base_path.rb +5 -0
- data/lib/jets/resource/api_gateway/base_path/function.rb +42 -0
- data/lib/jets/resource/api_gateway/base_path/mapping.rb +44 -0
- data/lib/jets/resource/api_gateway/base_path/role.rb +76 -0
- data/lib/jets/resource/api_gateway/cors.rb +1 -1
- data/lib/jets/resource/api_gateway/deployment.rb +9 -5
- data/lib/jets/resource/api_gateway/domain_name.rb +56 -0
- data/lib/jets/resource/api_gateway/method.rb +3 -4
- data/lib/jets/resource/api_gateway/resource.rb +4 -3
- data/lib/jets/resource/api_gateway/rest_api.rb +42 -14
- data/lib/jets/resource/api_gateway/rest_api/change_detection.rb +42 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +59 -0
- data/lib/jets/resource/api_gateway/rest_api/routes.rb +127 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +5 -1
- data/lib/jets/resource/function.rb +3 -20
- data/lib/jets/resource/function/environment.rb +23 -0
- data/lib/jets/resource/iam/application_role.rb +1 -1
- data/lib/jets/resource/route53.rb +3 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/router.rb +2 -0
- data/lib/jets/ruby_server.rb +6 -3
- data/lib/jets/stack.rb +1 -3
- data/lib/jets/stack/main/dsl.rb +1 -1
- data/lib/jets/stack/main/extensions/lambda.rb +4 -2
- data/lib/jets/turbine.rb +0 -3
- data/lib/jets/version.rb +1 -1
- data/vendor/jets-gems/lib/jets/gems.rb +1 -0
- data/vendor/jets-gems/lib/jets/gems/agree.rb +41 -0
- data/vendor/jets-gems/lib/jets/gems/check.rb +15 -2
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85ff84fd12cbc8c033636dae3eb3cf3b332389a28c611353a5167837622f7fc4
|
4
|
+
data.tar.gz: 492d4d772344cf8e329d02194a52aa6490bb7e47fb5f9e494332ee498f891be7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 899243a605ac1e19c670b14967947605617b86ff347edda853742c091d62b5771a12222d0f34e834d680da4066ea4363eab677ae76ee9b35a87cd596ddec34b6
|
7
|
+
data.tar.gz: db515e009cda35564ae4c7fcf757d0fbbe910494a7427867ba6df725ed3b4cddbba308b33c34bbbc54b14ed38a4d2d60a950738b9ecdf1da3895d32e464898b0
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,13 @@
|
|
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.2.0]
|
7
|
+
- major upgrades: binary support, custom domain, bluegreen
|
8
|
+
- binary support
|
9
|
+
- custom domains support: http://rubyonjets.com/docs/routing-custom-domain/
|
10
|
+
- automated bluegreen deploy for api gateway when needed: http://rubyonjets.com/docs/blue-green-deployment/
|
11
|
+
- Merge pull request #84 from tongueroo/bluegreen
|
12
|
+
|
6
13
|
## [1.1.5]
|
7
14
|
- Support multiple path parameters. Also allow path parameters to hold any value other than '/'.
|
8
15
|
- Merge pull request #82 from adam-harwood/master
|
data/Gemfile.lock
CHANGED
@@ -11,11 +11,12 @@ GIT
|
|
11
11
|
PATH
|
12
12
|
remote: .
|
13
13
|
specs:
|
14
|
-
jets (1.
|
14
|
+
jets (1.2.0)
|
15
15
|
actionpack (>= 5.2.1)
|
16
16
|
actionview (>= 5.2.1)
|
17
17
|
activerecord (>= 5.2.1)
|
18
18
|
activesupport (>= 5.2.1)
|
19
|
+
aws-sdk-apigateway
|
19
20
|
aws-sdk-cloudformation
|
20
21
|
aws-sdk-cloudwatchlogs
|
21
22
|
aws-sdk-dynamodb
|
@@ -65,28 +66,31 @@ GEM
|
|
65
66
|
tzinfo (~> 1.1)
|
66
67
|
arel (9.0.0)
|
67
68
|
aws-eventstream (1.0.1)
|
68
|
-
aws-partitions (1.
|
69
|
+
aws-partitions (1.121.0)
|
70
|
+
aws-sdk-apigateway (1.23.0)
|
71
|
+
aws-sdk-core (~> 3, >= 3.39.0)
|
72
|
+
aws-sigv4 (~> 1.0)
|
69
73
|
aws-sdk-cloudformation (1.13.0)
|
70
74
|
aws-sdk-core (~> 3, >= 3.39.0)
|
71
75
|
aws-sigv4 (~> 1.0)
|
72
76
|
aws-sdk-cloudwatchlogs (1.12.0)
|
73
77
|
aws-sdk-core (~> 3, >= 3.39.0)
|
74
78
|
aws-sigv4 (~> 1.0)
|
75
|
-
aws-sdk-core (3.
|
79
|
+
aws-sdk-core (3.42.0)
|
76
80
|
aws-eventstream (~> 1.0)
|
77
81
|
aws-partitions (~> 1.0)
|
78
82
|
aws-sigv4 (~> 1.0)
|
79
83
|
jmespath (~> 1.0)
|
80
|
-
aws-sdk-dynamodb (1.
|
84
|
+
aws-sdk-dynamodb (1.18.0)
|
81
85
|
aws-sdk-core (~> 3, >= 3.39.0)
|
82
86
|
aws-sigv4 (~> 1.0)
|
83
87
|
aws-sdk-kms (1.13.0)
|
84
88
|
aws-sdk-core (~> 3, >= 3.39.0)
|
85
89
|
aws-sigv4 (~> 1.0)
|
86
|
-
aws-sdk-lambda (1.
|
90
|
+
aws-sdk-lambda (1.16.0)
|
87
91
|
aws-sdk-core (~> 3, >= 3.39.0)
|
88
92
|
aws-sigv4 (~> 1.0)
|
89
|
-
aws-sdk-s3 (1.
|
93
|
+
aws-sdk-s3 (1.29.0)
|
90
94
|
aws-sdk-core (~> 3, >= 3.39.0)
|
91
95
|
aws-sdk-kms (~> 1)
|
92
96
|
aws-sigv4 (~> 1.0)
|
data/README/testing.md
CHANGED
@@ -16,7 +16,9 @@ To run the integration tests locally, you need to create a new Jets CRUD project
|
|
16
16
|
|
17
17
|
jets new demo
|
18
18
|
cd demo
|
19
|
+
# edit Gemfile to use the branch of jets being tested
|
19
20
|
jets generate scaffold Post title:string
|
21
|
+
jets import:rails http://github.com/tongueroo/demo-rails.git
|
20
22
|
jets server --no-reload
|
21
23
|
|
22
24
|
Then you can run the postman tests:
|
@@ -40,12 +42,14 @@ Then you can deploy the jets app and test it on real AWS Lambda.
|
|
40
42
|
|
41
43
|
Run the remote integration script:
|
42
44
|
|
45
|
+
eval "export $(cat demo/.env.development.remote)" # for DATABASE_URL for mega mode
|
43
46
|
BASE_URL=xxx spec/integration/remote.sh
|
44
47
|
|
45
48
|
Example:
|
46
49
|
|
50
|
+
eval "export $(cat demo/.env.development.remote)" # for DATABASE_URL for mega mode
|
47
51
|
BASE_URL=https://wb5dcjc09a.execute-api.us-west-2.amazonaws.com/dev spec/integration/remote.sh
|
48
52
|
|
49
53
|
## Manual Test
|
50
54
|
|
51
|
-
Test books create, update and delete manually until it's scripted.
|
55
|
+
Test books create, update and delete manually until it's scripted.
|
data/jets.gemspec
CHANGED
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency "actionview", ">= 5.2.1"
|
32
32
|
spec.add_dependency "activerecord", ">= 5.2.1"
|
33
33
|
spec.add_dependency "activesupport", ">= 5.2.1"
|
34
|
+
spec.add_dependency "aws-sdk-apigateway"
|
34
35
|
spec.add_dependency "aws-sdk-cloudformation"
|
35
36
|
spec.add_dependency "aws-sdk-cloudwatchlogs"
|
36
37
|
spec.add_dependency "aws-sdk-dynamodb"
|
data/lib/jets.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
$:.unshift(File.expand_path("../", __FILE__))
|
2
2
|
require "jets/version"
|
3
3
|
require "jets/camelizer"
|
4
|
-
require "active_support
|
4
|
+
require "active_support"
|
5
|
+
require "active_support/core_ext"
|
6
|
+
require "active_support/dependencies"
|
5
7
|
require "active_support/ordered_hash"
|
8
|
+
require "active_support/ordered_options"
|
9
|
+
require "active_support/concern"
|
6
10
|
require "colorize"
|
7
11
|
require "fileutils"
|
8
12
|
require "memoist"
|
data/lib/jets/application.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require "active_support/ordered_options"
|
2
1
|
require "singleton"
|
3
2
|
require "rack"
|
4
3
|
|
@@ -13,7 +12,10 @@ class Jets::Application
|
|
13
12
|
end
|
14
13
|
|
15
14
|
def setup!
|
16
|
-
load_configs
|
15
|
+
load_configs
|
16
|
+
end
|
17
|
+
|
18
|
+
def finish!
|
17
19
|
load_inflections
|
18
20
|
setup_auto_load_paths
|
19
21
|
load_routes
|
@@ -31,14 +33,7 @@ class Jets::Application
|
|
31
33
|
config = ActiveSupport::OrderedOptions.new
|
32
34
|
config.project_name = project_name
|
33
35
|
config.cors = true
|
34
|
-
config.autoload_paths =
|
35
|
-
app/controllers
|
36
|
-
app/models
|
37
|
-
app/jobs
|
38
|
-
app/rules
|
39
|
-
app/helpers
|
40
|
-
app/shared/resources
|
41
|
-
]
|
36
|
+
config.autoload_paths = default_autoload_paths
|
42
37
|
config.extra_autoload_paths = []
|
43
38
|
|
44
39
|
# function properties defaults
|
@@ -80,8 +75,14 @@ class Jets::Application
|
|
80
75
|
|
81
76
|
config.api = ActiveSupport::OrderedOptions.new
|
82
77
|
config.api.authorization_type = "NONE"
|
78
|
+
config.api.binary_media_types = ['multipart/form-data']
|
83
79
|
config.api.endpoint_type = 'EDGE' # PRIVATE, EDGE, REGIONAL
|
84
80
|
|
81
|
+
config.domain = ActiveSupport::OrderedOptions.new
|
82
|
+
# config.domain.name = "#{Jets.project_namespace}.coolapp.com" # Default is nil
|
83
|
+
# config.domain.cert_arn = "..."
|
84
|
+
config.domain.endpoint_type = "REGIONAL" # EDGE or REGIONAL. Default to EDGE because CloudFormation update is faster
|
85
|
+
|
85
86
|
config
|
86
87
|
end
|
87
88
|
|
@@ -110,7 +111,14 @@ class Jets::Application
|
|
110
111
|
|
111
112
|
def eval_app_config
|
112
113
|
app_config = "#{Jets.root}config/application.rb"
|
113
|
-
require
|
114
|
+
load app_config # use load instead of require so reload_configs! works
|
115
|
+
end
|
116
|
+
|
117
|
+
# After the mimimal template gets build, we need to reload it for the full stack
|
118
|
+
# creation. This allows us to reference IAM policies configs that depend on the
|
119
|
+
# creation of the s3 bucket.
|
120
|
+
def reload_configs!
|
121
|
+
load_configs
|
114
122
|
end
|
115
123
|
|
116
124
|
def load_environments_config
|
@@ -129,12 +137,31 @@ class Jets::Application
|
|
129
137
|
|
130
138
|
def setup_auto_load_paths
|
131
139
|
autoload_paths = config.autoload_paths + config.extra_autoload_paths
|
132
|
-
autoload_paths = autoload_paths.uniq.map { |p| "#{Jets.root}#{p}" }
|
133
140
|
# internal_autoload_paths are last
|
134
141
|
autoload_paths += internal_autoload_paths
|
135
142
|
ActiveSupport::Dependencies.autoload_paths += autoload_paths
|
136
143
|
end
|
137
144
|
|
145
|
+
# Essentially folders under app folder will be the default_autoload_paths. Example:
|
146
|
+
# app/controllers
|
147
|
+
# app/helpers
|
148
|
+
# app/jobs
|
149
|
+
# app/models
|
150
|
+
# app/rules
|
151
|
+
# app/shared/resources
|
152
|
+
def default_autoload_paths
|
153
|
+
paths = []
|
154
|
+
Dir.glob("#{Jets.root}app/*").each do |p|
|
155
|
+
p.sub!('./','')
|
156
|
+
paths << p unless exclude_autoload_path?(p)
|
157
|
+
end
|
158
|
+
paths
|
159
|
+
end
|
160
|
+
|
161
|
+
def exclude_autoload_path?(path)
|
162
|
+
path =~ %r{app/javascript} || path =~ %r{app/views}
|
163
|
+
end
|
164
|
+
|
138
165
|
def internal_autoload_paths
|
139
166
|
internal = File.expand_path("../internal", __FILE__)
|
140
167
|
paths = %w[
|
@@ -175,13 +202,6 @@ class Jets::Application
|
|
175
202
|
config.managed_policy_definitions ||= [] # default empty
|
176
203
|
end
|
177
204
|
|
178
|
-
# After the mimimal template gets build, we need to reload it for the full stack
|
179
|
-
# creation. This allows us to reference IAM policies configs that depend on the
|
180
|
-
# creation of the s3 bucket.
|
181
|
-
def reload_configs!
|
182
|
-
load_configs
|
183
|
-
end
|
184
|
-
|
185
205
|
def self.default_iam_policy
|
186
206
|
project_namespace = Jets.project_namespace
|
187
207
|
logs = {
|
data/lib/jets/aws_services.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require "aws-sdk-apigateway"
|
1
2
|
require "aws-sdk-cloudformation"
|
2
3
|
require "aws-sdk-cloudwatchlogs"
|
3
4
|
require "aws-sdk-lambda"
|
@@ -11,21 +12,26 @@ module Jets::AwsServices
|
|
11
12
|
include StackStatus
|
12
13
|
extend Memoist
|
13
14
|
|
15
|
+
def apigateway
|
16
|
+
Aws::APIGateway::Client.new
|
17
|
+
end
|
18
|
+
memoize :apigateway
|
19
|
+
|
14
20
|
def cfn
|
15
21
|
Aws::CloudFormation::Client.new
|
16
22
|
end
|
17
23
|
memoize :cfn
|
18
24
|
|
19
|
-
def logs
|
20
|
-
Aws::CloudWatchLogs::Client.new
|
21
|
-
end
|
22
|
-
memoize :logs
|
23
|
-
|
24
25
|
def lambda
|
25
26
|
Aws::Lambda::Client.new
|
26
27
|
end
|
27
28
|
memoize :lambda
|
28
29
|
|
30
|
+
def logs
|
31
|
+
Aws::CloudWatchLogs::Client.new
|
32
|
+
end
|
33
|
+
memoize :logs
|
34
|
+
|
29
35
|
def s3
|
30
36
|
Aws::S3::Client.new
|
31
37
|
end
|
@@ -36,13 +42,13 @@ module Jets::AwsServices
|
|
36
42
|
end
|
37
43
|
memoize :s3_resource
|
38
44
|
|
39
|
-
def sts
|
40
|
-
Aws::STS::Client.new
|
41
|
-
end
|
42
|
-
memoize :sts
|
43
|
-
|
44
45
|
def sns
|
45
46
|
Aws::SNS::Client.new
|
46
47
|
end
|
47
48
|
memoize :sns
|
49
|
+
|
50
|
+
def sts
|
51
|
+
Aws::STS::Client.new
|
52
|
+
end
|
53
|
+
memoize :sts
|
48
54
|
end
|
@@ -48,5 +48,12 @@ module Jets::AwsServices
|
|
48
48
|
true
|
49
49
|
end
|
50
50
|
end
|
51
|
+
|
52
|
+
# Lookup output value.
|
53
|
+
# Used in Jets::Resource::ApiGateway::RestApi::* andJets::Commands::Url
|
54
|
+
def lookup(outputs, key)
|
55
|
+
out = outputs.find { |o| o.output_key == key }
|
56
|
+
out&.output_value
|
57
|
+
end
|
51
58
|
end
|
52
59
|
end
|
data/lib/jets/booter.rb
CHANGED
@@ -7,10 +7,14 @@ class Jets::Booter
|
|
7
7
|
confirm_jets_project!
|
8
8
|
require_bundle_gems
|
9
9
|
Jets::Dotenv.load!
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
Jets.application.setup!
|
12
12
|
app_initializers
|
13
13
|
turbine_initializers
|
14
|
+
Jets.application.finish!
|
15
|
+
|
16
|
+
Jets.eager_load!
|
17
|
+
setup_db
|
14
18
|
# build_middleware_stack # TODO: figure out how to build middleware during Jets.boot without breaking jets new and webpacker:install
|
15
19
|
|
16
20
|
@booted = true
|
@@ -165,12 +165,26 @@ class Jets::Builders
|
|
165
165
|
update_lazy_load_config # at the top, must be called before Jets.lazy_load? is used
|
166
166
|
store_s3_base_url
|
167
167
|
disable_webpacker_middleware
|
168
|
+
copy_internal_jets_code
|
168
169
|
setup_tmp
|
169
170
|
calculate_md5s # must be called before generate_node_shims and create_zip_files
|
170
171
|
generate_node_shims
|
171
172
|
create_zip_files
|
172
173
|
end
|
173
174
|
|
175
|
+
# We copy the files into the project because we cannot require simple functions
|
176
|
+
# directly since they are wrapped by an anonymous class.
|
177
|
+
# TODO: Do this with the other files we required the same way.
|
178
|
+
def copy_internal_jets_code
|
179
|
+
files = []
|
180
|
+
files.each do |relative_path|
|
181
|
+
src = File.expand_path("../internal/#{relative_path}", File.dirname(__FILE__))
|
182
|
+
dest = "#{full(tmp_code)}/#{relative_path}"
|
183
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
184
|
+
FileUtils.cp(src, dest)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
174
188
|
def update_lazy_load_config
|
175
189
|
size_limit = AWS_CODE_SIZE_LIMIT
|
176
190
|
code_size = dir_size(full(tmp_code))
|
@@ -18,6 +18,7 @@ class Jets::Builders
|
|
18
18
|
app_ruby_shims
|
19
19
|
poly_shims
|
20
20
|
shared_shims
|
21
|
+
internal_shims
|
21
22
|
end
|
22
23
|
|
23
24
|
def app_ruby_shims
|
@@ -67,6 +68,20 @@ class Jets::Builders
|
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
71
|
+
def internal_shims
|
72
|
+
jets_base_path if Jets.custom_domain?
|
73
|
+
end
|
74
|
+
|
75
|
+
def jets_base_path
|
76
|
+
path = "jets/base_path.rb"
|
77
|
+
internal = File.expand_path("../internal", File.dirname(__FILE__))
|
78
|
+
src = "#{internal}/app/functions/#{path}"
|
79
|
+
result = Jets::Erb.result(src, stage_name: Jets::Resource::ApiGateway::Deployment.stage_name)
|
80
|
+
dest = "#{tmp_code}/handlers/functions/#{path}"
|
81
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
82
|
+
IO.write(dest, result)
|
83
|
+
end
|
84
|
+
|
70
85
|
# app/shared/functions/kevin.py => /tmp/jets/demo/app_root/handlers/shared/functions/kevin.py
|
71
86
|
def copy_source_as_handler(fun)
|
72
87
|
source_path = fun.source_file
|
@@ -6,9 +6,9 @@
|
|
6
6
|
#
|
7
7
|
# Implements:
|
8
8
|
#
|
9
|
-
# functions
|
10
|
-
# handler_for(function_name)
|
11
|
-
# js_path
|
9
|
+
# functions: IE [:index, :show]
|
10
|
+
# handler_for(function_name): IE handlers/controllers/posts_controller.index
|
11
|
+
# js_path: IE: handlers/controllers/posts_controller.js
|
12
12
|
#
|
13
13
|
module Jets::Builders::ShimVars
|
14
14
|
class App < Base
|
@@ -61,6 +61,7 @@ module Jets::Builders::ShimVars
|
|
61
61
|
end
|
62
62
|
|
63
63
|
# This gets called in the node shim js template
|
64
|
+
# IE handlers/controllers/posts_controller.index
|
64
65
|
def handler_for(meth)
|
65
66
|
# possibly not include _function
|
66
67
|
underscored_name = @relative_path.sub(%r{app/(\w+)/},'').sub('.rb','')
|
@@ -6,9 +6,9 @@
|
|
6
6
|
#
|
7
7
|
# Implements:
|
8
8
|
#
|
9
|
-
# functions
|
10
|
-
# handler_for(function_name)
|
11
|
-
# js_path
|
9
|
+
# functions: IE [:index, :show]
|
10
|
+
# handler_for(function_name): IE handlers/controllers/posts_controller.index
|
11
|
+
# js_path: IE: handlers/controllers/posts_controller.js
|
12
12
|
#
|
13
13
|
module Jets::Builders::ShimVars
|
14
14
|
class Shared < Base
|
@@ -17,15 +17,19 @@ module Jets::Builders::ShimVars
|
|
17
17
|
@fun = fun
|
18
18
|
end
|
19
19
|
|
20
|
+
# Always only one element for shared functions
|
21
|
+
# functions: IE [:handle]
|
20
22
|
def functions
|
21
23
|
[@fun.meth] # function_names
|
22
24
|
end
|
23
25
|
|
24
|
-
#
|
26
|
+
# Dont need function_name arg but keeping the same interface as parent class
|
27
|
+
# IE handlers/shared/functions/bob.handle
|
25
28
|
def handler_for(function_name)
|
26
29
|
@fun.handler_dest
|
27
30
|
end
|
28
31
|
|
32
|
+
# IE handlers/shared/functions/bob.js
|
29
33
|
def js_path
|
30
34
|
@fun.handler_dest
|
31
35
|
end
|
@@ -179,23 +179,27 @@ const once = async () => {
|
|
179
179
|
// currying function to make handler code prettier
|
180
180
|
function handler(full_handler_name) {
|
181
181
|
return function(event, context, callback) {
|
182
|
-
request(event, full_handler_name, callback);
|
182
|
+
request(event, context, full_handler_name, callback);
|
183
183
|
};
|
184
184
|
}
|
185
185
|
|
186
186
|
////////////////////////////////////////////////////////////////////////////////
|
187
187
|
// main logic for handler
|
188
|
-
function request(event, handler, callback) {
|
188
|
+
function request(event, context, handler, callback) {
|
189
189
|
truncate(JETS_OUTPUT);
|
190
190
|
truncate(TMP_LOG_PATH);
|
191
191
|
|
192
192
|
log("event:");
|
193
193
|
log(event);
|
194
|
+
log("context:");
|
195
|
+
log(context);
|
194
196
|
var client = new net.Socket();
|
195
197
|
client.connect(8080, '127.0.0.01', function() {
|
196
198
|
log('Connected to socket');
|
197
199
|
client.write(JSON.stringify(event));
|
198
200
|
client.write("\r\n"); // important: \r\n is how server knows input is done
|
201
|
+
client.write(JSON.stringify(context));
|
202
|
+
client.write("\r\n"); // important: \r\n is how server knows input is done
|
199
203
|
client.write(handler);
|
200
204
|
client.write("\r\n"); // important: \r\n is how server knows input is done
|
201
205
|
});
|
@@ -260,7 +264,7 @@ function request(event, handler, callback) {
|
|
260
264
|
truncate(TMP_LOG_PATH);
|
261
265
|
|
262
266
|
log("Retrying request NOW");
|
263
|
-
request(event, handler, callback);
|
267
|
+
request(event, context, handler, callback);
|
264
268
|
}, 500);
|
265
269
|
});
|
266
270
|
}
|