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
@@ -1,10 +1,10 @@
1
1
  module Jets
2
- class Server
2
+ class RackServer
3
3
  def self.start(options={})
4
4
  new(options).start
5
5
  end
6
6
 
7
- def initialize(options)
7
+ def initialize(options={})
8
8
  @options = options
9
9
  end
10
10
 
@@ -44,6 +44,35 @@ module Jets
44
44
  end
45
45
  end
46
46
 
47
+ # blocks until rack server is up
48
+ def wait_for_socket
49
+ return unless Jets.rack?
50
+
51
+ retries = 0
52
+ max_retries = 30 # 15 seconds at a delay of 0.5s
53
+ delay = 0.5
54
+ if ENV['C9_USER'] # overrides for local testing
55
+ max_retries = 3
56
+ delay = 3
57
+ end
58
+ begin
59
+ server = TCPSocket.new('localhost', 9292)
60
+ server.close
61
+ rescue Errno::ECONNREFUSED
62
+ puts "Unable to connect to localhost:9292. Delay for #{delay} and will try to connect again." if ENV['JETS_DEBUG']
63
+ sleep(delay)
64
+ retries += 1
65
+ if retries < max_retries
66
+ retry
67
+ else
68
+ puts "Giving up on trying to connect to localhost:9292"
69
+ return false
70
+ end
71
+ end
72
+ puts "Connected to localhost:9292 successfully"
73
+ true
74
+ end
75
+
47
76
  def rack_project
48
77
  "#{Jets.root}rack"
49
78
  end
@@ -7,8 +7,8 @@ class Jets::Resource
7
7
  autoload :ChildStack, 'jets/resource/child_stack'
8
8
  autoload :Config, 'jets/resource/config'
9
9
  autoload :Events, 'jets/resource/events'
10
- autoload :Function, 'jets/resource/function'
11
10
  autoload :Iam, 'jets/resource/iam'
11
+ autoload :Lambda, 'jets/resource/lambda'
12
12
  autoload :Permission, 'jets/resource/permission'
13
13
  autoload :Replacer, 'jets/resource/replacer'
14
14
  autoload :Route53, 'jets/resource/route53'
@@ -1,6 +1,6 @@
1
1
  module Jets::Resource::ApiGateway::BasePath
2
2
  class Function < Jets::Resource::Base
3
- include Jets::Resource::Function::Environment
3
+ include Jets::Resource::Lambda::Function::Environment
4
4
 
5
5
  def definition
6
6
  {
@@ -50,15 +50,21 @@ module Jets::Resource::ChildStack
50
50
  end
51
51
 
52
52
  def parameters
53
- common = {
54
- IamRole: "!GetAtt IamRole.Arn",
55
- S3Bucket: "!Ref S3Bucket",
56
- }
53
+ common = self.class.common_parameters
57
54
  common.merge!(controller_params) if controller?
58
55
  common.merge!(depends_on_params) if depends_on
59
56
  common
60
57
  end
61
58
 
59
+ def self.common_parameters
60
+ parameters = {
61
+ IamRole: "!GetAtt IamRole.Arn",
62
+ S3Bucket: "!Ref S3Bucket",
63
+ }
64
+ parameters[:GemLayer] = "!Ref GemLayer" unless Jets.poly_only?
65
+ parameters
66
+ end
67
+
62
68
  def controller_params
63
69
  return {} if Jets::Router.routes.empty?
64
70
 
@@ -0,0 +1,5 @@
1
+ module Jets::Resource::Lambda
2
+ autoload :Function, 'jets/resource/lambda/function'
3
+ autoload :GemLayer, 'jets/resource/lambda/gem_layer'
4
+ autoload :LayerVersion, 'jets/resource/lambda/layer_version'
5
+ end
@@ -1,6 +1,6 @@
1
- class Jets::Resource
1
+ module Jets::Resource::Lambda
2
2
  class Function < Jets::Resource::Base
3
- autoload :Environment, 'jets/resource/function/environment'
3
+ autoload :Environment, 'jets/resource/lambda/function/environment'
4
4
  include Environment
5
5
 
6
6
  def initialize(task)
@@ -120,15 +120,17 @@ class Jets::Resource
120
120
  properties
121
121
  end
122
122
 
123
- # Properties managed by Jets with more finality.
123
+ # Properties managed by Jets with merged with finality.
124
124
  def finalize_properties!(props)
125
125
  handler = full_handler(props)
126
126
  runtime = get_runtime(props)
127
- props.merge!(
127
+ managed = {
128
128
  function_name: function_name,
129
129
  handler: handler,
130
130
  runtime: runtime,
131
- )
131
+ }
132
+ managed[:layers] = ["!Ref GemLayer"] if runtime =~ /^ruby/
133
+ props.merge!(managed)
132
134
  end
133
135
 
134
136
  def get_runtime(props)
@@ -139,7 +141,7 @@ class Jets::Resource
139
141
  map = {
140
142
  node: "nodejs8.10",
141
143
  python: "python3.6",
142
- ruby: "nodejs8.10", # node shim for ruby support
144
+ ruby: "ruby2.5",
143
145
  }
144
146
  map[@task.lang]
145
147
  end
@@ -1,4 +1,4 @@
1
- class Jets::Resource::Function
1
+ class Jets::Resource::Lambda::Function
2
2
  module Environment
3
3
  def env_properties
4
4
  env_vars = Jets::Dotenv.load!(true)
@@ -0,0 +1,17 @@
1
+ module Jets::Resource::Lambda
2
+ class GemLayer < LayerVersion
3
+ def description
4
+ "Jets Ruby Gems"
5
+ end
6
+
7
+ def layer_name
8
+ # Do not include the Jets.extra_env to group the layers in same app together
9
+ "#{Jets.config.short_env}-#{Jets.config.project_name}-gems"
10
+ end
11
+
12
+ def code_s3_key
13
+ checksum = Jets::Builders::Md5.checksums["stage/opt"]
14
+ "jets/code/opt-#{checksum}.zip" # s3_key
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,46 @@
1
+ # Type: "AWS::Lambda::LayerVersion"
2
+ # Properties:
3
+ # CompatibleRuntimes:
4
+ # - String
5
+ # - ...
6
+ # Content:
7
+ # Content
8
+ # Description: String
9
+ # LayerName: String
10
+ # LicenseInfo: String
11
+ module Jets::Resource::Lambda
12
+ class LayerVersion < Jets::Resource::Base
13
+ def definition
14
+ {
15
+ layer_version_logical_id => {
16
+ type: "AWS::Lambda::LayerVersion",
17
+ properties: {
18
+ # compatible_runtimes: ["ruby2.5"],
19
+ content: {
20
+ s3_bucket: s3_bucket,
21
+ s3_key: code_s3_key,
22
+ # s3_object_version: string,
23
+ },
24
+ description: description,
25
+ layer_name: layer_name,
26
+ license_info: "MIT",
27
+ }
28
+ }
29
+ }
30
+ end
31
+
32
+ def s3_bucket
33
+ "!Ref S3Bucket"
34
+ end
35
+
36
+ def layer_version_logical_id
37
+ self.class.name.split('::').last
38
+ end
39
+
40
+ def outputs
41
+ {
42
+ logical_id => "!Ref #{logical_id}",
43
+ }
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,52 @@
1
+ module Jets
2
+ class TmpLoader
3
+ include AwsServices
4
+
5
+ def self.load!
6
+ new.load
7
+ end
8
+
9
+ def initialize(yaml_path=nil)
10
+ yaml_path ||= "#{Jets.root}handlers/data.yml"
11
+ @data = YAML.load_file(yaml_path)
12
+ @s3_bucket = @data['s3_bucket']
13
+ @rack_zip = @data['rack_zip']
14
+ end
15
+
16
+ def load
17
+ rack
18
+ end
19
+
20
+ def rack
21
+ return unless @rack_zip
22
+ download_and_extract(@rack_zip, '/tmp/rack')
23
+ end
24
+
25
+ def download_and_extract(zip_file, folder_dest)
26
+ s3_key = "jets/code/#{zip_file}" # jets/code/rack-checksum.zip
27
+ download_path = "/tmp/#{zip_file}" # /tmp/rack-checksum.zip
28
+
29
+ download(s3_key, download_path)
30
+ unzip(download_path, folder_dest)
31
+ end
32
+
33
+ def download(key, dest)
34
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/Client.html#get_object-instance_method
35
+ # stream object directly to disk
36
+ s3.get_object(response_target: dest,
37
+ bucket: @s3_bucket,
38
+ key: key)
39
+ end
40
+
41
+ def unzip(zipfile, folder_dest)
42
+ sh "unzip -qo #{zipfile} -d #{folder_dest}"
43
+ end
44
+
45
+ def sh(command)
46
+ puts "=> #{command}"
47
+ success = system(command)
48
+ raise "Command #{command} failed" unless success
49
+ success
50
+ end
51
+ end
52
+ end
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "1.2.1"
2
+ VERSION = "1.3.0"
3
3
  end
File without changes
@@ -45,6 +45,11 @@ Run the remote integration script:
45
45
  eval "export $(cat demo/.env.development.remote)" # for DATABASE_URL for mega mode
46
46
  BASE_URL=xxx spec/integration/remote.sh
47
47
 
48
+ Manually seed Rails data. Will add this to the remote.sh in the future.
49
+
50
+ cd demo/rack
51
+ rails runner 'Book.create(id: 1) unless Book.find_by(id: 1)'
52
+
48
53
  Example:
49
54
 
50
55
  eval "export $(cat demo/.env.development.remote)" # for DATABASE_URL for mega mode
@@ -8,7 +8,7 @@ module Jets
8
8
  autoload :Extract, 'jets/gems/extract'
9
9
  autoload :Report, 'jets/gems/report'
10
10
 
11
- def ruby_version_folder
11
+ def ruby_folder
12
12
  major, minor, patch = RUBY_VERSION.split('.')
13
13
  [major, minor, '0'].join('.') # 2.5.1 => 2.5.0
14
14
  end
@@ -126,20 +126,20 @@ EOL
126
126
  #
127
127
  # Example paths:
128
128
  # Macosx:
129
- # bundled/gems/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/nokogiri-1.8.1
130
- # bundled/gems/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/byebug-9.1.0
129
+ # vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/nokogiri-1.8.1
130
+ # vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/byebug-9.1.0
131
131
  # Official AWS Lambda Linux AMI:
132
- # bundled/gems/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/nokogiri-1.8.1
132
+ # vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/nokogiri-1.8.1
133
133
  # Circleci Ubuntu based Linux:
134
- # bundled/gems/ruby/2.5.0/extensions/x86_64-linux/2.5.0/pg-0.21.0
134
+ # vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/pg-0.21.0
135
135
  def compiled_gem_paths
136
- Dir.glob("#{Jets.build_root}/cache/bundled/gems/ruby/*/extensions/**/**/*.{so,bundle}")
136
+ Dir.glob("#{Jets.build_root}/cache/vendor/bundle/ruby/*/extensions/**/**/*.{so,bundle}")
137
137
  end
138
138
 
139
- # Input: bundled/gems/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/byebug-9.1.0
139
+ # Input: vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/byebug-9.1.0
140
140
  # Output: byebug-9.1.0
141
141
  def gem_name_from_path(path)
142
- regexp = /gems\/ruby\/\d+\.\d+\.\d+\/extensions\/.*?\/.*?\/(.*?)\//
142
+ regexp = /vendor\/bundle\/ruby\/\d+\.\d+\.\d+\/extensions\/.*?\/.*?\/(.*?)\//
143
143
  gem_name = path.match(regexp)[1]
144
144
  end
145
145
 
@@ -25,7 +25,7 @@ module Jets::Gems
25
25
  end
26
26
 
27
27
  # Example url:
28
- # https://gems.lambdagems.com/gems/2.5.0/byebug/byebug-9.1.0-x86_64-linux.tgz
28
+ # https://gems2.lambdagems.com/gems/2.5.0/byebug/byebug-9.1.0.zip
29
29
  def url_exists?(url)
30
30
  url = URI.parse(url)
31
31
  req = Net::HTTP.new(url.host, url.port).tap do |http|
@@ -43,14 +43,14 @@ module Jets::Gems
43
43
 
44
44
  # gem_name: byebug-9.1.0
45
45
  # Example url:
46
- # https://gems.lambdagems.com/gems/2.5.0/byebug/byebug-9.1.0-x86_64-linux.tgz
46
+ # https://gems2.lambdagems.com/gems/2.5.0/byebug/byebug-9.1.0.zip
47
47
  def gem_url(gem_name)
48
48
  folder = gem_name.gsub(/-(\d+\.\d+\.\d+.*)/,'') # folder: byebug
49
- "#{source_url}/gems/#{Jets::Gems.ruby_version_folder}/#{folder}/#{gem_name}-x86_64-linux.tgz"
49
+ "#{source_url}/gems/#{Jets::Gems.ruby_folder}/#{folder}/#{gem_name}.zip"
50
50
  end
51
51
 
52
- def ruby_version_folder
53
- Jets::Gems.ruby_version_folder
52
+ def ruby_folder
53
+ Jets::Gems.ruby_folder
54
54
  end
55
55
  end
56
56
  end
@@ -9,8 +9,8 @@ module Jets::Gems::Extract
9
9
  @name = name
10
10
  @options = options
11
11
 
12
- @downloads_root = options[:downloads_root] || "/tmp/jets/lambdagems"
13
- @source_url = options[:source_url] || "https://gems.lambdagems.com"
12
+ @downloads_root = options[:downloads_root] || "/tmp/jets/#{Jets.config.project_name}/lambdagems"
13
+ @source_url = options[:source_url] || Jets.default_gems_source
14
14
  end
15
15
 
16
16
  def clean_downloads(folder)
@@ -19,15 +19,8 @@ module Jets::Gems::Extract
19
19
  FileUtils.rm_rf(path)
20
20
  end
21
21
 
22
- def unpack_tarball(tarball_path)
23
- dest = project_root
24
- say "Unpacking into #{dest}"
25
- FileUtils.mkdir_p(dest)
26
- untar(tarball_path, dest)
27
- end
28
-
29
- def untar(tarball_path, parent_folder_dest)
30
- sh("tar -xzf #{tarball_path} -C #{parent_folder_dest}")
22
+ def unzip(zipfile_path, parent_folder_dest)
23
+ sh("cd #{parent_folder_dest} && unzip -qo #{zipfile_path}")
31
24
  end
32
25
 
33
26
  def sh(command)
@@ -14,12 +14,19 @@ module Jets::Gems::Extract
14
14
  def run
15
15
  say "Looking for #{full_gem_name} gem in: #{@options[:source_url]}"
16
16
  clean_downloads(:gems) if @options[:clean]
17
- tarball_path = download_gem
17
+ zipfile_path = download_gem
18
18
  remove_current_gem
19
- unpack_tarball(tarball_path)
19
+ unzip_file(zipfile_path)
20
20
  say("Gem #{full_gem_name} unpacked at #{project_root}", :debug)
21
21
  end
22
22
 
23
+ def unzip_file(zipfile_path)
24
+ dest = "#{Jets.build_root}/stage/code/opt"
25
+ say "Unpacking into #{dest}"
26
+ FileUtils.mkdir_p(dest)
27
+ unzip(zipfile_path, dest)
28
+ end
29
+
23
30
  # ensure that we always have the full gem name
24
31
  def full_gem_name
25
32
  return @full_gem_name if @full_gem_name
@@ -45,7 +52,7 @@ module Jets::Gems::Extract
45
52
  # The folder contains the re-produced directory structure. Example with
46
53
  # the gem: byebug-9.1.0
47
54
  #
48
- # bundled/gems/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/byebug-9.1.0
55
+ # vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0-static/byebug-9.1.0
49
56
  #
50
57
  def download_gem
51
58
  # download - also move to /tmp/jets/demo/compiled_gems folder
@@ -60,7 +67,7 @@ module Jets::Gems::Extract
60
67
  raise NotFound.new(message)
61
68
  end
62
69
  end
63
- say "Tarball downloaded to: #{tarball_dest}"
70
+ say "Downloaded to: #{tarball_dest}"
64
71
  tarball_dest
65
72
  end
66
73
 
@@ -77,7 +84,7 @@ module Jets::Gems::Extract
77
84
  say "Removing current #{full_gem_name} gem installation:"
78
85
  gem_dirs = Dir.glob("#{project_root}/**/*").select do |path|
79
86
  File.directory?(path) &&
80
- path =~ %r{bundled/gems} &&
87
+ path =~ %r{vendor/bundle} &&
81
88
  File.basename(path) == full_gem_name
82
89
  end
83
90
  gem_dirs.each do |dir|
@@ -88,11 +95,11 @@ module Jets::Gems::Extract
88
95
 
89
96
  # full_gem_name: byebug-9.1.0
90
97
  def gem_url
91
- "#{source_url}/gems/#{ruby_version_folder}/#{gem_name}/#{full_gem_name}-x86_64-linux.tgz"
98
+ "#{source_url}/gems/#{ruby_folder}/#{gem_name}/#{full_gem_name}.zip"
92
99
  end
93
100
 
94
- def ruby_version_folder
95
- Jets::Gems.ruby_version_folder
101
+ def ruby_folder
102
+ Jets::Gems.ruby_folder
96
103
  end
97
104
  end
98
105
  end
@@ -1,6 +1,6 @@
1
1
  # Usage:
2
2
  #
3
- # Jets::Gems::Extract::Ruby.new("2.5.0",
3
+ # Jets::Gems::Extract::Ruby.new("2.5.3",
4
4
  # downloads_root: cache_area, # defaults to /tmp/lambdagem
5
5
  # dest: cache_area, # defaults to . (project_root)
6
6
  # ).run
@@ -12,13 +12,22 @@ module Jets::Gems::Extract
12
12
  def run
13
13
  say "Looking for #{full_ruby_name}"
14
14
  clean_downloads(:rubies) if @options[:clean]
15
- tarball_path = download_ruby
16
- unpack_tarball(tarball_path)
17
- say("Ruby #{full_ruby_name} unpacked at #{project_root}", :debug)
15
+ zip_path = download_ruby
16
+ unzip(zip_path)
17
+ end
18
+
19
+ def unzip(path)
20
+ dest = "#{Jets.build_root}/stage/code/opt"
21
+ say "Unpacking into #{dest}"
22
+ FileUtils.mkdir_p(dest)
23
+ # cd-ing dest unzips the files into that folder
24
+ sh("cd #{dest} && unzip -qo #{path}")
25
+ say("Ruby #{full_ruby_name} unziped at #{dest}", :debug)
18
26
  end
19
27
 
20
28
  def download_ruby
21
29
  url = ruby_url
30
+ puts "download ruby url #{url}"
22
31
  tarball_dest = download_file(url, download_path(File.basename(url)))
23
32
  unless tarball_dest
24
33
  message = "Url: #{url} not found"
@@ -29,7 +38,7 @@ module Jets::Gems::Extract
29
38
  raise NotFound.new(message)
30
39
  end
31
40
  end
32
- say "Tarball downloaded to: #{tarball_dest}"
41
+ say "Downloaded to: #{tarball_dest}"
33
42
  tarball_dest
34
43
  end
35
44
 
@@ -42,16 +51,16 @@ module Jets::Gems::Extract
42
51
  #
43
52
  # Example:
44
53
  #
45
- # 2.5.0 -> ruby-2.5.0-linux-x86_64.tgz
46
- # ruby-2.5.0 -> ruby-2.5.0-linux-x86_64.tgz
47
- # test-ruby-2.5.0 -> test-ruby-2.5.0-linux-x86_64.tgz
54
+ # 2.5.3 -> ruby-2.5.3.zip
55
+ # ruby-2.5.3 -> ruby-2.5.3.zip
56
+ # test-ruby-2.5.3 -> test-ruby-2.5.3.zip
48
57
  def full_ruby_name
49
58
  md = @name.match(/^(\d+\.\d+\.\d+)$/)
50
59
  if md
51
60
  ruby_version = md[1]
52
- "ruby-#{ruby_version}-linux-x86_64.tgz"
61
+ "ruby-#{ruby_version}.zip"
53
62
  else
54
- "#{@name}-linux-x86_64.tgz"
63
+ "#{@name}.zip"
55
64
  end
56
65
  end
57
66