Class: Bookbinder::Deploy::Archive
- Inherits:
-
Object
- Object
- Bookbinder::Deploy::Archive
- Defined in:
- lib/bookbinder/deploy/archive.rb
Defined Under Namespace
Classes: FileDoesNotExist, NoNamespaceGiven
Instance Method Summary collapse
- #create_and_upload_tarball(app_dir: 'final_app', bucket: '', build_number: nil, namespace: nil) ⇒ Object
- #download(download_dir: nil, bucket: nil, build_number: nil, namespace: nil) ⇒ Object
-
#initialize(logger: nil, key: '', secret: '') ⇒ Archive
constructor
A new instance of Archive.
- #tarball_name_regex(namespace) ⇒ Object
- #upload_file(bucket, name, source_path) ⇒ Object
Constructor Details
#initialize(logger: nil, key: '', secret: '') ⇒ Archive
Returns a new instance of Archive.
13 14 15 16 17 |
# File 'lib/bookbinder/deploy/archive.rb', line 13 def initialize(logger: nil, key: '', secret: '') @logger = logger @aws_key = key @aws_secret_key = secret end |
Instance Method Details
#create_and_upload_tarball(app_dir: 'final_app', bucket: '', build_number: nil, namespace: nil) ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/bookbinder/deploy/archive.rb', line 19 def create_and_upload_tarball( app_dir: 'final_app', bucket: '', build_number: nil, namespace: nil ) tarball_filename, tarball_path = create_tarball(app_dir, build_number, namespace) upload_file(bucket, tarball_filename, tarball_path) Success.new("Green build ##{build_number} has been uploaded to S3 for #{namespace}") end |
#download(download_dir: nil, bucket: nil, build_number: nil, namespace: nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/bookbinder/deploy/archive.rb', line 37 def download(download_dir: nil, bucket: nil, build_number: nil, namespace: nil) raise NoNamespaceGiven, 'One must specify a namespace to find files in this bucket' unless namespace directory = connection.directories.get bucket build_number ||= latest_build_number_for_namespace(directory, namespace) filename = Artifact.new(namespace, build_number, 'tgz').filename s3_file = directory.files.get(filename) raise FileDoesNotExist, "Unable to find tarball on AWS for book '#{namespace}', build number: #{build_number}" unless s3_file downloaded_file = File.join(Dir.mktmpdir, 'downloaded.tgz') File.open(downloaded_file, 'wb') { |f| f.write(s3_file.body) } Dir.chdir(download_dir) { `tar xzf #{downloaded_file}` } @logger.log "Green build ##{build_number.to_s.green} has been downloaded from S3 and untarred into #{download_dir.to_s.cyan}" end |
#tarball_name_regex(namespace) ⇒ Object
54 55 56 |
# File 'lib/bookbinder/deploy/archive.rb', line 54 def tarball_name_regex(namespace) /^#{namespace}-(\d+_?\d*)\.tgz/ end |
#upload_file(bucket, name, source_path) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/bookbinder/deploy/archive.rb', line 30 def upload_file(bucket, name, source_path) find_or_create_directory(bucket). files.create(key: name, body: File.read(source_path), public: true) end |