Updating a Ruby on Rails Application for Amazon Elastic Beanstalk - Amazon SDK for Ruby
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Updating a Ruby on Rails Application for Amazon Elastic Beanstalk

The following example updates the Ruby on Rails application MyRailsApp in the us-west-2 region.

Note

You must be in the root of your Rails app to succesfully run the script.

# Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # This file is licensed under the Apache License, Version 2.0 (the "License"). # You may not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS # OF ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. require 'aws-sdk-elasticbeanstalk' # v2: require 'aws-sdk' Aws.config.update({region: 'us-west-2'}) eb = Aws::ElasticBeanstalk::Client.new s3 = Aws::S3::Client.new app_name = 'MyRailsApp' # Get S3 bucket containing app app_versions = eb.describe_application_versions({ application_name: app_name }) av = app_versions.application_versions[0] bucket = av.source_bundle.s3_bucket s3_key = av.source_bundle.s3_key # Get info on environment envs = eb.describe_environments({ application_name: app_name }) env = envs.environments[0] env_name = env.environment_name # Create new storage location resp = eb.create_storage_location() puts "Created storage location in bucket #{resp.s3_bucket}" s3.list_objects({ prefix: s3_key, bucket: bucket }) # Create ZIP file zip_file_basename = SecureRandom.urlsafe_base64.to_s zip_file_name = zip_file_basename + '.zip' # Call out to OS to produce ZIP file cmd = "git archive --format=zip -o #{zip_file_name} HEAD" %x[ #{cmd} ] # Get ZIP file contents zip_contents = File.read(zip_file_name) key = app_name + "\\" + zip_file_name s3.put_object({ body: zip_contents, bucket: bucket, key: key }) date = Time.new today = date.day.to_s + "/" + date.month.to_s + "/" + date.year.to_s eb.create_application_version({ process: false, application_name: app_name, version_label: zip_file_basename, source_bundle: { s3_bucket: bucket, s3_key: key }, description: "Updated #{today}" }) eb.update_environment({ environment_name: env_name, version_label: zip_file_basename })