Class: Jets::Builders::LambdaLayer

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/jets/builders/lambda_layer.rb

Instance Method Summary collapse

Methods included from Util

#code_area, #full, #headline, #sh, #stage_area

Instance Method Details

#buildObject

At this point we gems have all been moved to stage/code/vendor/bundle, this includes binary gems, a good state. This method moves them:

from stage/code/vendor/bundle/ruby/2.5.0
to stage/opt/ruby/gems/2.5.0

So we can move gems into the Lambda Layer. Important folders later:

stage/code/opt/lib
stage/code/opt/ruby


16
17
18
19
20
# File 'lib/jets/builders/lambda_layer.rb', line 16

def build
  move_opt_to_stage
  move_vendor_to_opt
  symlink_vendor_gems
end

#move_opt_to_stageObject



22
23
24
25
26
27
# File 'lib/jets/builders/lambda_layer.rb', line 22

def move_opt_to_stage
  opt_original = "#{code_area}/opt"
  opt = "#{stage_area}/opt"
  FileUtils.mkdir_p(File.dirname(opt))
  FileUtils.mv(opt_original, opt)
end

#move_vendor_to_optObject



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/jets/builders/lambda_layer.rb', line 29

def move_vendor_to_opt
  ruby_folder = Jets::Gems.ruby_folder
  gems_original = "#{code_area}/vendor/bundle/ruby/#{ruby_folder}"
  gems = "#{stage_area}/opt/ruby/gems/#{ruby_folder}"
  FileUtils.mkdir_p(File.dirname(gems))
  FileUtils.mv(gems_original, gems)
  # Deleting in this way to make sure folders are empty before we delete them
  FileUtils.rmdir("#{code_area}/vendor/bundle/ruby")
  FileUtils.rmdir("#{code_area}/vendor/bundle")
  FileUtils.rmdir("#{code_area}/vendor") if Dir.empty?("#{code_area}/vendor")
end

Simple logic: vendor/bundle/ruby/2.5.0 -> /opt/ruby/gems/2.5.0



42
43
44
45
46
47
48
# File 'lib/jets/builders/lambda_layer.rb', line 42

def symlink_vendor_gems
  ruby_folder = Jets::Gems.ruby_folder
  dest = "#{code_area}/vendor/bundle/ruby/#{ruby_folder}"
  FileUtils.mkdir_p(File.dirname(dest))
  puts "ln -sf /opt/ruby/gems/#{ruby_folder} #{dest}" # uncommen to debug
  FileUtils.ln_sf("/opt/ruby/gems/#{ruby_folder}", dest)
end