module Middleman::Rackspace
Constants
- PACKAGE
- TAGLINE
- VERSION
Public Instance Methods
deploy(app, environment)
click to toggle source
# File lib/middleman-rackspace/deploy.rb, line 8 def deploy(app, environment) config = app.extensions[:rackspace].options container_name = case environment when 'staging' config.container_staging when 'production' config.container_production end # build_ENVIRONMENT_TIMESTAMP.tar.gz archive_name = "build_#{environment}_#{Time.now.strftime('%Y-%m-%d_%H-%M-%S')}.tar.gz" puts '' puts "Creating archive '#{archive_name}'." # Compress /build directory into build_ENVIRONMENT_TIMESTAMP.tar.gz system("cd ./build && tar -zcf ../#{archive_name} .") # Configure Fog service = Fog::Storage.new({ provider: 'Rackspace', rackspace_username: config.rackspace_username, rackspace_api_key: config.rackspace_api_key, rackspace_region: config.rackspace_region, connection_options: {} }) # Get or create container root_directory = service.directories.get(container_name) unless root_directory puts '' puts "Creating container '#{container_name}'." # Create the new container root_directory = service.directories.create(key: container_name, public: true) # Configure container for static site hosting # https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/#create-a-static-website Typhoeus.post("#{service.endpoint_uri.to_s}/#{container_name}", headers: {'X-Auth-Token' => service.send(:auth_token), 'X-Container-Meta-Web-Index' => config.index_file, 'X-Container-Meta-Web-Error' => config.error_file_prefix}) end puts '' puts "Updating container '#{container_name}'." # Upload and extract tar.gz on Rackspace # https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/#extracting-archive-files service.extract_archive(container_name, File.open(archive_name, 'r'), 'tar.gz') puts '' puts "Container '#{container_name}' live at:\n#{root_directory.public_url}" end