Sha256: c1b38da8284ba8434a9db12d9fc2bfc9605b0e95d05a1eaf353899c02952a512

Contents?: true

Size: 1.3 KB

Versions: 28

Compression:

Stored size: 1.3 KB

Contents

module Jets
  class TmpLoader
    include AwsServices

    def self.load!
      new.load
    end

    def initialize(yaml_path=nil)
      yaml_path ||= "#{Jets.root}/handlers/data.yml"
      return unless File.exist?(yaml_path)
      @data = Jets::Util::Yamler.load_file(yaml_path)
      @s3_bucket = @data['s3_bucket']
      @rack_zip = @data['rack_zip']
    end

    def load
      rack
    end

    def rack
      return unless @rack_zip
      download_and_extract(@rack_zip, '/tmp/rack')
    end

    def download_and_extract(zip_file, folder_dest)
      s3_key = "jets/code/#{zip_file}" # jets/code/rack-checksum.zip
      download_path = "/tmp/#{zip_file}" # /tmp/rack-checksum.zip

      download(s3_key, download_path)
      unzip(download_path, folder_dest)
    end

    def download(key, dest)
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/Client.html#get_object-instance_method
      # stream object directly to disk
      s3.get_object(response_target: dest,
                    bucket: @s3_bucket,
                    key: key)
    end

    def unzip(zipfile, folder_dest)
      sh "unzip -qo #{zipfile} -d #{folder_dest}"
    end

    def sh(command)
      puts "=> #{command}"
      success = system(command)
      raise "Command #{command} failed" unless success
      success
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
jets-4.0.12 lib/jets/tmp_loader.rb
jets-4.0.11 lib/jets/tmp_loader.rb
jets-5.0.13 lib/jets/tmp_loader.rb
jets-5.0.12 lib/jets/tmp_loader.rb
jets-5.0.11 lib/jets/tmp_loader.rb
jets-5.0.10 lib/jets/tmp_loader.rb
jets-5.0.9 lib/jets/tmp_loader.rb
jets-5.0.8 lib/jets/tmp_loader.rb
jets-5.0.7 lib/jets/tmp_loader.rb
jets-5.0.6 lib/jets/tmp_loader.rb
jets-5.0.5 lib/jets/tmp_loader.rb
jets-5.0.4 lib/jets/tmp_loader.rb
jets-5.0.3 lib/jets/tmp_loader.rb
jets-5.0.2 lib/jets/tmp_loader.rb
jets-5.0.1 lib/jets/tmp_loader.rb
jets-5.0.0 lib/jets/tmp_loader.rb
jets-4.0.10 lib/jets/tmp_loader.rb
jets-5.0.0.beta1 lib/jets/tmp_loader.rb
jets-4.0.9 lib/jets/tmp_loader.rb
jets-4.0.8 lib/jets/tmp_loader.rb