jets 1.2.1 → 1.3.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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/Gemfile.lock +4 -4
  4. data/README.md +2 -2
  5. data/lib/jets.rb +3 -4
  6. data/lib/jets/application.rb +13 -2
  7. data/lib/jets/builders.rb +3 -0
  8. data/lib/jets/builders/code_builder.rb +22 -89
  9. data/lib/jets/builders/code_size.rb +55 -0
  10. data/lib/jets/builders/gem_replacer.rb +22 -1
  11. data/lib/jets/builders/handler_generator.rb +31 -5
  12. data/lib/jets/builders/lambda_layer.rb +50 -0
  13. data/lib/jets/builders/md5.rb +10 -5
  14. data/lib/jets/builders/md5_zip.rb +1 -0
  15. data/lib/jets/builders/purger.rb +35 -0
  16. data/lib/jets/builders/rack_packager.rb +25 -5
  17. data/lib/jets/builders/rackup_wrappers/rackup +1 -5
  18. data/lib/jets/builders/ruby_packager.rb +25 -27
  19. data/lib/jets/builders/shim_vars/app.rb +3 -3
  20. data/lib/jets/builders/shim_vars/base.rb +9 -4
  21. data/lib/jets/builders/shim_vars/shared.rb +2 -2
  22. data/lib/jets/builders/templates/handler.rb +7 -0
  23. data/lib/jets/builders/tidy.rb +4 -3
  24. data/lib/jets/builders/util.rb +11 -3
  25. data/lib/jets/cfn/builders/base_child_builder.rb +6 -3
  26. data/lib/jets/cfn/builders/interface.rb +1 -1
  27. data/lib/jets/cfn/builders/parent_builder.rb +5 -0
  28. data/lib/jets/commands/build.rb +4 -2
  29. data/lib/jets/commands/help/gems/check.md +1 -1
  30. data/lib/jets/commands/main.rb +1 -1
  31. data/lib/jets/commands/new.rb +4 -2
  32. data/lib/jets/commands/sequence.rb +1 -1
  33. data/lib/jets/commands/templates/skeleton/Gemfile.tt +2 -2
  34. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -5
  35. data/lib/jets/commands/templates/skeleton/config/database.yml.tt +2 -2
  36. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +2 -1
  37. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +2 -3
  38. data/lib/jets/commands/upgrade/v1.rb +21 -0
  39. data/lib/jets/controller/renderers/template_renderer.rb +1 -1
  40. data/lib/jets/controller/rendering.rb +1 -4
  41. data/lib/jets/core.rb +45 -6
  42. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +32 -34
  43. data/lib/jets/mega/request.rb +11 -0
  44. data/lib/jets/overrides/lambda.rb +1 -0
  45. data/lib/jets/overrides/lambda/marshaller.rb +31 -0
  46. data/lib/jets/overrides/rails.rb +4 -0
  47. data/lib/jets/{rails_overrides → overrides/rails}/asset_tag_helper.rb +0 -0
  48. data/lib/jets/{rails_overrides → overrides/rails}/common_methods.rb +0 -0
  49. data/lib/jets/{rails_overrides → overrides/rails}/rendering_helper.rb +0 -0
  50. data/lib/jets/{rails_overrides → overrides/rails}/url_helper.rb +0 -0
  51. data/lib/jets/poly_fun/base_executor.rb +1 -1
  52. data/lib/jets/preheat.rb +1 -0
  53. data/lib/jets/processors/main_processor.rb +3 -10
  54. data/lib/jets/{server.rb → rack_server.rb} +31 -2
  55. data/lib/jets/resource.rb +1 -1
  56. data/lib/jets/resource/api_gateway/base_path/function.rb +1 -1
  57. data/lib/jets/resource/child_stack/app_class.rb +10 -4
  58. data/lib/jets/resource/lambda.rb +5 -0
  59. data/lib/jets/resource/{function.rb → lambda/function.rb} +8 -6
  60. data/lib/jets/resource/{function → lambda/function}/environment.rb +1 -1
  61. data/lib/jets/resource/lambda/gem_layer.rb +17 -0
  62. data/lib/jets/resource/lambda/layer_version.rb +46 -0
  63. data/lib/jets/tmp_loader.rb +52 -0
  64. data/lib/jets/version.rb +1 -1
  65. data/{README → readme}/prerelease.md +0 -0
  66. data/{README → readme}/testing.md +5 -0
  67. data/vendor/jets-gems/lib/jets/gems.rb +1 -1
  68. data/vendor/jets-gems/lib/jets/gems/check.rb +7 -7
  69. data/vendor/jets-gems/lib/jets/gems/exist.rb +5 -5
  70. data/vendor/jets-gems/lib/jets/gems/extract/base.rb +4 -11
  71. data/vendor/jets-gems/lib/jets/gems/extract/gem.rb +15 -8
  72. data/vendor/jets-gems/lib/jets/gems/extract/ruby.rb +19 -10
  73. metadata +22 -15
  74. data/lib/jets/builders/templates/handler.js +0 -9
  75. data/lib/jets/builders/templates/shim.js +0 -275
  76. data/lib/jets/rails_overrides.rb +0 -4
  77. data/lib/jets/ruby_server.rb +0 -148
@@ -0,0 +1,50 @@
1
+ class Jets::Builders
2
+ class LambdaLayer
3
+ include Util
4
+
5
+ # At this point we gems have all been moved to stage/code/vendor/bundle, this includes
6
+ # binary gems, a good state. This method moves them:
7
+ #
8
+ # from stage/code/vendor/bundle/ruby/2.5.0
9
+ # to stage/opt/ruby/gems/2.5.0
10
+ #
11
+ # So we can move gems into the Lambda Layer. Important folders later:
12
+ #
13
+ # stage/code/opt/lib
14
+ # stage/code/opt/ruby
15
+ #
16
+ def build
17
+ move_opt_to_stage
18
+ move_vendor_to_opt
19
+ symlink_vendor_gems
20
+ end
21
+
22
+ def move_opt_to_stage
23
+ opt_original = "#{code_area}/opt"
24
+ opt = "#{stage_area}/opt"
25
+ FileUtils.mkdir_p(File.dirname(opt))
26
+ FileUtils.mv(opt_original, opt)
27
+ end
28
+
29
+ def move_vendor_to_opt
30
+ ruby_folder = Jets::Gems.ruby_folder
31
+ gems_original = "#{code_area}/vendor/bundle/ruby/#{ruby_folder}"
32
+ gems = "#{stage_area}/opt/ruby/gems/#{ruby_folder}"
33
+ FileUtils.mkdir_p(File.dirname(gems))
34
+ FileUtils.mv(gems_original, gems)
35
+ # Deleting in this way to make sure folders are empty before we delete them
36
+ FileUtils.rmdir("#{code_area}/vendor/bundle/ruby")
37
+ FileUtils.rmdir("#{code_area}/vendor/bundle")
38
+ FileUtils.rmdir("#{code_area}/vendor") if Dir.empty?("#{code_area}/vendor")
39
+ end
40
+
41
+ # Simple logic: vendor/bundle/ruby/2.5.0 -> /opt/ruby/gems/2.5.0
42
+ def symlink_vendor_gems
43
+ ruby_folder = Jets::Gems.ruby_folder
44
+ dest = "#{code_area}/vendor/bundle/ruby/#{ruby_folder}"
45
+ FileUtils.mkdir_p(File.dirname(dest))
46
+ puts "ln -sf /opt/ruby/gems/#{ruby_folder} #{dest}" # uncommen to debug
47
+ FileUtils.ln_sf("/opt/ruby/gems/#{ruby_folder}", dest)
48
+ end
49
+ end
50
+ end
@@ -4,7 +4,7 @@ require 'digest'
4
4
  # to reference files with the md5 checksum. The files are the:
5
5
  #
6
6
  # jets/code/rack-checksum.zip
7
- # jets/code/bundled-checksum.zip
7
+ # jets/code/opt-checksum.zip
8
8
  #
9
9
  # We compute the checksums before we generate the node shim handlers.
10
10
  class Jets::Builders
@@ -17,14 +17,19 @@ class Jets::Builders
17
17
 
18
18
  def stage_folders
19
19
  paths = []
20
- paths << "stage/bundled" if Jets.lazy_load?
21
- paths << "stage/rack" if Jets.rack?
22
- # Important to have stage/code at the end, since it will use the other
23
- # 'symlinked' folders to adjust the md5 hash.
20
+ paths << "stage/opt" if folder_exist?("opt")
21
+ paths << "stage/rack" if folder_exist?("rack")
22
+ # Important to have stage/code at the end, since its md5 checksum depends
23
+ # on the previous folders.
24
24
  paths << "stage/code"
25
25
  paths
26
26
  end
27
27
 
28
+ def folder_exist?(folder)
29
+ path = "#{Jets.build_root}/stage/#{folder}"
30
+ File.directory?(path)
31
+ end
32
+
28
33
  def compute!
29
34
  stage_folders.each do |path|
30
35
  @@checksums[path] = dir(path)
@@ -20,6 +20,7 @@ class Jets::Builders
20
20
 
21
21
  def create
22
22
  headline "Creating zip file for #{@path}"
23
+ # => Creating zip file for /tmp/jets/demo/stage/bundled
23
24
 
24
25
  # https://serverfault.com/questions/265675/how-can-i-zip-compress-a-symlink
25
26
  command = "cd #{@path} && zip --symlinks -rq #{zip_file} ."
@@ -0,0 +1,35 @@
1
+ # When upgrading jets, automatically rm -rf /tmp/jets/project in case the structure has changed.
2
+ class Jets::Builders
3
+ class Purger
4
+ def initialize
5
+ @project_name = Jets.config.project_name
6
+ @version_file = "/tmp/jets/#{@project_name}/jets_version.txt"
7
+ end
8
+
9
+ def purge
10
+ if version_changed?
11
+ last_version = @last_version || "unknown"
12
+ puts "The jets version has changed enough since the last build to merit freshing the build cache."
13
+ puts "Current jets version: #{Jets::VERSION} Last built jets version: #{last_version}"
14
+ puts "Removing /tmp/jets/#{@project_name} to start fresh."
15
+ FileUtils.rm_rf("/tmp/jets/#{@project_name}")
16
+ end
17
+ write_version
18
+ end
19
+
20
+ # When jets changes versions major or minor version consider it a big enough can to purge the cache
21
+ def version_changed?
22
+ return true unless File.exist?(@version_file)
23
+
24
+ @last_version = IO.read(@version_file).strip
25
+ last_major, last_minor, _ = @last_version.split('.')
26
+ current_major, current_minor, _ = Jets::VERSION.split('.')
27
+ last_major != current_major || last_minor != current_minor
28
+ end
29
+
30
+ def write_version
31
+ FileUtils.mkdir_p(File.dirname(@version_file))
32
+ IO.write(@version_file, Jets::VERSION)
33
+ end
34
+ end
35
+ end
@@ -3,15 +3,17 @@ class Jets::Builders
3
3
  def finish
4
4
  return unless gemfile_exist?
5
5
 
6
- symlink_rack_bundled
6
+ symlink_gems
7
+ rack_symlink
7
8
  copy_rackup_wrappers
8
9
  end
9
10
 
10
- def symlink_rack_bundled
11
+ def symlink_gems
12
+ ruby_folder = Jets::Gems.ruby_folder
11
13
  # IE: @full_app_root: /tmp/jets/demo/stage/code/rack
12
- rack_bundled = "#{@full_app_root}/bundled"
13
- FileUtils.rm_f(rack_bundled) # looks like FileUtils.ln_sf doesnt remove existing symlinks
14
- FileUtils.ln_sf("/var/task/bundled", rack_bundled)
14
+ dest = "#{@full_app_root}/vendor/bundle/ruby/#{ruby_folder}"
15
+ FileUtils.mkdir_p(File.dirname(dest))
16
+ FileUtils.ln_sf("/opt/ruby/gems/#{ruby_folder}", dest)
15
17
  end
16
18
 
17
19
  def copy_rackup_wrappers
@@ -25,5 +27,23 @@ class Jets::Builders
25
27
  FileUtils.chmod 0755, dest
26
28
  end
27
29
  end
30
+
31
+ # Moves folder to a stage folder and create a symlink its place
32
+ # that links from /var/task to /tmp. Example:
33
+ #
34
+ # code_area/rack => /tmp/rack
35
+ #
36
+ def rack_symlink
37
+ src = "#{@full_app_root}/rack"
38
+ return unless File.exist?(src)
39
+
40
+ dest = "#{stage_area}/rack"
41
+ dir = File.dirname(dest)
42
+ FileUtils.mkdir_p(dir) unless File.exist?(dir)
43
+ FileUtils.mv(src, dest)
44
+
45
+ # Create symlink
46
+ FileUtils.ln_sf("/tmp/rack", "/#{@full_app_root}/rack")
47
+ end
28
48
  end
29
49
  end
@@ -16,8 +16,4 @@ unset BUNDLE_IGNORE_CONFIG
16
16
  # echo $$ > /tmp/jets-rackup.pid
17
17
 
18
18
  # Run the actual app using the bundled Ruby interpreter, with Bundler activated.
19
- if [ -n "$C9_USER" ]; then
20
- exec ruby -rbundler/setup bin/rackup.rb "$@"
21
- else
22
- exec "$PROJECTDIR/bundled/rbenv/shims/ruby" -rbundler/setup "$PROJECTDIR/bin/rackup.rb" "$@"
23
- fi
19
+ exec ruby -rbundler/setup bin/rackup.rb "$@"
@@ -18,12 +18,16 @@ class Jets::Builders
18
18
  setup_bundle_config
19
19
  end
20
20
 
21
+ # build gems in vendor/bundle/ruby/2.5.0 (done in install phase)
22
+ # replace_compiled_gems:
23
+ # remove binary gems in vendor/bundle/ruby/2.5.0
24
+ # extract binary gems in opt/ruby/gems/2.5.0
25
+ # move binary gems from opt/ruby/gems/2.5.0 to vendor/bundle/ruby/2.5.0
21
26
  def finish
22
27
  return unless gemfile_exist?
23
28
 
24
- copy_bundled_cache
25
- extract_ruby
26
- extract_gems
29
+ copy_cache_gems
30
+ replace_compiled_gems
27
31
  tidy
28
32
  end
29
33
 
@@ -36,7 +40,7 @@ class Jets::Builders
36
40
  # If user is on a macosx machine, macosx gems will be installed.
37
41
  # If user is on a linux machine, linux gems will be installed.
38
42
  #
39
- # Copies Gemfile* to /tmp/jetss/demo/bundled folder and installs
43
+ # Copies Gemfile* to /tmp/jets/demo/cache folder and installs
40
44
  # gems with bundle install from there.
41
45
  #
42
46
  # We take the time to copy Gemfile and bundle into a separate directory
@@ -44,8 +48,6 @@ class Jets::Builders
44
48
  # project gets built again not all the gems from get installed from the
45
49
  # beginning.
46
50
  def bundle_install
47
- return if poly_only?
48
-
49
51
  full_project_path = @full_app_root
50
52
  headline "Bundling: running bundle install in cache area: #{cache_area}."
51
53
 
@@ -53,10 +55,9 @@ class Jets::Builders
53
55
 
54
56
  require "bundler" # dynamically require bundler so user can use any bundler
55
57
  Bundler.with_clean_env do
56
- # cd /tmp/jets/demo
57
58
  sh(
58
59
  "cd #{cache_area} && " \
59
- "env BUNDLE_IGNORE_CONFIG=1 bundle install --path #{cache_area}/bundled/gems --without development test"
60
+ "env BUNDLE_IGNORE_CONFIG=1 bundle install --path #{cache_area}/vendor/bundle --without development test"
60
61
  )
61
62
  end
62
63
 
@@ -95,7 +96,7 @@ class Jets::Builders
95
96
  end
96
97
 
97
98
  # When using submodules, bundler leaves old submodules behind. Over time this inflates
98
- # the size of the the bundled gems. So we'll clean it up.
99
+ # the size of the the cache gems. So we'll clean it up.
99
100
  def clean_old_submodules
100
101
  # https://stackoverflow.com/questions/38800129/parsing-a-gemfile-lock-with-bundler
101
102
  lockfile = "#{cache_area}/Gemfile.lock"
@@ -117,8 +118,8 @@ class Jets::Builders
117
118
  md[1] # git_sha
118
119
  end
119
120
 
120
- # IE: /tmp/jets/demo/cache/bundled/gems/ruby/2.5.0/bundler/gems/webpacker-a8c46614c675
121
- Dir.glob("#{cache_area}/bundled/gems/ruby/2.5.0/bundler/gems/*").each do |path|
121
+ # IE: /tmp/jets/demo/cache/vendor/bundle/ruby/2.5.0/bundler/gems/webpacker-a8c46614c675
122
+ Dir.glob("#{cache_area}/vendor/bundle/ruby/2.5.0/bundler/gems/*").each do |path|
122
123
  sha = path.split('-').last[0..6] # only first 7 chars of the git sha
123
124
  unless git_shas.include?(sha)
124
125
  # puts "Removing old submoduled gem: #{path}" # uncomment to see and debug
@@ -139,7 +140,7 @@ class Jets::Builders
139
140
  # Override project's .bundle/config and ensure that .bundle/config matches
140
141
  # at these 2 spots:
141
142
  # app_root/.bundle/config
142
- # bundled/gems/.bundle/config
143
+ # vendor/bundle/.bundle/config
143
144
  cache_bundle_config = "#{cache_area}/.bundle/config"
144
145
  app_bundle_config = "#{@full_app_root}/.bundle/config"
145
146
  FileUtils.mkdir_p(File.dirname(app_bundle_config))
@@ -153,7 +154,8 @@ class Jets::Builders
153
154
  def ensure_build_cache_bundle_config_exists!
154
155
  text =<<-EOL
155
156
  ---
156
- BUNDLE_PATH: "bundled/gems"
157
+ BUNDLE_FROZEN: "true"
158
+ BUNDLE_PATH: "vendor/bundle"
157
159
  BUNDLE_WITHOUT: "development:test"
158
160
  EOL
159
161
  bundle_config = "#{cache_area}/.bundle/config"
@@ -169,25 +171,21 @@ EOL
169
171
  }
170
172
  end
171
173
 
172
- def extract_ruby
173
- headline "Setting up a vendored copy of ruby."
174
- Jets::Gems::Extract::Ruby.new(Jets::RUBY_VERSION, gems_options).run
175
- end
176
-
177
- def extract_gems
174
+ def replace_compiled_gems
178
175
  headline "Replacing compiled gems with AWS Lambda Linux compiled versions."
179
176
  GemReplacer.new(Jets::RUBY_VERSION, gems_options).run
180
177
  end
181
178
 
182
- def copy_bundled_cache
183
- app_root_bundled = "#{@full_app_root}/bundled"
184
- if File.exist?(app_root_bundled)
185
- puts "Removing current bundled from project"
186
- FileUtils.rm_rf(app_root_bundled)
179
+ def copy_cache_gems
180
+ vendor_bundle = "#{@full_app_root}/vendor/bundle"
181
+ if File.exist?(vendor_bundle)
182
+ puts "Removing current vendor_bundle from project"
183
+ FileUtils.rm_rf(vendor_bundle)
187
184
  end
188
- # Leave #{Jets.build_root}/bundled behind to act as cache
189
- if File.exist?("#{cache_area}/bundled")
190
- FileUtils.cp_r("#{cache_area}/bundled", app_root_bundled)
185
+ # Leave #{Jets.build_root}/vendor_bundle behind to act as cache
186
+ if File.exist?("#{cache_area}/vendor/bundle")
187
+ FileUtils.mkdir_p(File.dirname(vendor_bundle))
188
+ FileUtils.cp_r("#{cache_area}/vendor/bundle", vendor_bundle)
191
189
  end
192
190
  end
193
191
 
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # functions: IE [:index, :show]
10
10
  # handler_for(function_name): IE handlers/controllers/posts_controller.index
11
- # js_path: IE: handlers/controllers/posts_controller.js
11
+ # dest_path: IE: handlers/controllers/posts_controller.js
12
12
  #
13
13
  module Jets::Builders::ShimVars
14
14
  class App < Base
@@ -69,10 +69,10 @@ module Jets::Builders::ShimVars
69
69
  end
70
70
 
71
71
  # Example return: "handlers/controllers/posts.js"
72
- def js_path
72
+ # TODO: rename this to dest_path or something better now since using native ruby
73
+ def dest_path
73
74
  @relative_path
74
75
  .sub("app", "handlers")
75
- .sub(/\.rb$/, ".js")
76
76
  end
77
77
  end
78
78
  end
@@ -8,13 +8,18 @@ module Jets::Builders::ShimVars
8
8
  end
9
9
 
10
10
  def rack_zip
11
- checksum = Jets::Builders::Md5.checksums["stage/rack"]
12
- "rack-#{checksum}.zip"
11
+ checksum_zip(:rack)
13
12
  end
14
13
 
15
14
  def bundled_zip
16
- checksum = Jets::Builders::Md5.checksums["stage/bundled"]
17
- "bundled-#{checksum}.zip"
15
+ checksum_zip(:bundled)
16
+ end
17
+
18
+ private
19
+ def checksum_zip(name)
20
+ checksum = Jets::Builders::Md5.checksums["stage/#{name}"]
21
+ return unless checksum
22
+ "#{name}-#{checksum}.zip"
18
23
  end
19
24
 
20
25
  def stage_area
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # functions: IE [:index, :show]
10
10
  # handler_for(function_name): IE handlers/controllers/posts_controller.index
11
- # js_path: IE: handlers/controllers/posts_controller.js
11
+ # dest_path: IE: handlers/controllers/posts_controller.js
12
12
  #
13
13
  module Jets::Builders::ShimVars
14
14
  class Shared < Base
@@ -30,7 +30,7 @@ module Jets::Builders::ShimVars
30
30
  end
31
31
 
32
32
  # IE handlers/shared/functions/bob.js
33
- def js_path
33
+ def dest_path
34
34
  @fun.handler_dest
35
35
  end
36
36
  end
@@ -0,0 +1,7 @@
1
+ require "bundler/setup"
2
+ require "jets"
3
+ Jets.once # runs once in lambda execution context
4
+
5
+ <% @vars.functions.each do |function_name| -%>
6
+ Jets.handler(self, "<%= @vars.handler_for(function_name) %>")
7
+ <% end %>
@@ -48,9 +48,9 @@ class Jets::Builders
48
48
  (defaults + keep).uniq
49
49
  end
50
50
 
51
- # folders to remove in the bundled folder regardless of the level of the folder
51
+ # folders to remove in the vendor/bundle folder regardless of the level of the folder
52
52
  def tidy_bundled
53
- Dir.glob("#{@project_root}/bundled/**/*").each do |path|
53
+ Dir.glob("#{@project_root}/vendor/bundle/**/*").each do |path|
54
54
  next unless File.directory?(path)
55
55
  dir = File.basename(path)
56
56
  next unless always_removals.include?(dir)
@@ -65,7 +65,8 @@ class Jets::Builders
65
65
  # actual cache folders that they used.
66
66
  def remove_gem_cache
67
67
  ruby_minor_version = Jets::RUBY_VERSION.split('.')[0..1].join('.') + '.0'
68
- FileUtils.rm_rf("#{@project_root}/bundled/gems/ruby/#{ruby_minor_version}/cache")
68
+ cache_path = "#{@project_root}/vendor/bundle/ruby/#{ruby_minor_version}/cache"
69
+ FileUtils.rm_rf(cache_path)
69
70
  end
70
71
 
71
72
  def rm_rf(path)
@@ -3,7 +3,11 @@ class Jets::Builders
3
3
  def sh(command)
4
4
  puts "=> #{command}".colorize(:green)
5
5
  success = system(command)
6
- abort("#{command} failed to run") unless success
6
+ unless success
7
+ puts "#{command} failed to run.".colorize(:red)
8
+ puts caller[0]
9
+ exit 1
10
+ end
7
11
  success
8
12
  end
9
13
 
@@ -17,8 +21,12 @@ class Jets::Builders
17
21
  "#{Jets.build_root}/#{relative_path}"
18
22
  end
19
23
 
20
- def poly_only?
21
- Jets.poly_only?
24
+ def stage_area
25
+ "#{Jets.build_root}/stage"
26
+ end
27
+
28
+ def code_area
29
+ "#{stage_area}/code"
22
30
  end
23
31
  end
24
32
  end
@@ -22,8 +22,11 @@ class Jets::Cfn::Builders
22
22
  end
23
23
 
24
24
  def add_common_parameters
25
- add_parameter("IamRole", Description: "Iam Role that Lambda function uses.")
26
- add_parameter("S3Bucket", Description: "S3 Bucket for source code.")
25
+ common_parameters = Jets::Resource::ChildStack::AppClass.common_parameters
26
+ common_parameters.each do |k,_|
27
+ add_parameter(k, Description: k)
28
+ end
29
+
27
30
  depends_on_params.each do |logical_id, desc|
28
31
  add_parameter(logical_id, Description: desc)
29
32
  end
@@ -58,7 +61,7 @@ class Jets::Cfn::Builders
58
61
  end
59
62
 
60
63
  def add_function(task)
61
- resource = Jets::Resource::Function.new(task)
64
+ resource = Jets::Resource::Lambda::Function.new(task)
62
65
  add_resource(resource)
63
66
  end
64
67