2010-07-15 8 views
0

J'ai compte en amazon S3 et je l'utilise juste pour mes css et javascripts et des photos comme un CDN. Je veux une tâche capistrano pour envoyer mes javascripts et css et des photos à mon seau en amazon s3. Comment je fais?Déployer mon css et javascripts avec capistrano à amazon S3

tahnks.

merci John Topley Basé dans votre code j'ai fait comme ci-dessous.

configure config vous/s3.yaml

access_key_id:
secret_access_key:
seau:

lib/tâches/s3.rake

namespace :s3 do 
    namespace :push do 
    require 'aws/s3' 
    #TIMESTAMP = '%Y%m%d-%H%M' 
    db = YAML::load(open("#{RAILS_ROOT}/config/database.yml")) 
    s3 = YAML::load(open("#{RAILS_ROOT}/config/s3.yml")) 
    AWS::S3::Base.establish_connection!(
      :access_key_id => "#{s3['access_key_id']}", 
      :secret_access_key => "#{s3['secret_access_key']}" 
    ) 

    desc 'Send images of current brach to S3' 
    task :images => :environment do 
     path = "images" 
     files = Dir.glob(File.join("public/#{path}", "*")) 
     bucket = "#{s3['bucket']}/#{path}" 
     files.each do |file| 
      AWS::S3::S3Object.store(File.basename(file), open(file), "#{bucket}", :content_type => 'application/x-gzip') 
      puts("Sending file #{file}") 
     end 
    end 

    desc 'Send css of current brach to S3' 
    task :css => :environment do 
     path = "stylesheets" 
     files = Dir.glob(File.join("public/#{path}", "*.css")) 
     bucket = "#{s3['bucket']}/#{path}" 
     files.each do |file| 
      AWS::S3::S3Object.store(File.basename(file), open(file), "#{bucket}", :content_type => 'application/x-gzip') 
      puts("Sending file #{file}") 
     end 
    end 

    desc 'Send js of current brach to S3' 
    task :js => :environment do 
     path = "javascripts" 
     files = Dir.glob(File.join("public/#{path}", "*.js")) 
     bucket = "#{s3['bucket']}/#{path}" 
     files.each do |file| 
      AWS::S3::S3Object.store(File.basename(file), open(file), "#{bucket}", :content_type => 'application/x-gzip') 
      puts("Sending file #{file}") 
     end 
    end 

    desc 'Send all files' 
     task :all => :environment do 
      system("rake s3:push:images RAILS_ENV=#{RAILS_ENV}") 
      system("rake s3:push:css RAILS_ENV=#{RAILS_ENV}") 
      system("rake s3:push:js RAILS_ENV=#{RAILS_ENV} ") 
     end 
    end 

fin

pour Déployez d'actifs en amazon s3 râteau s3: push: images
râteau s3: pousser: js
s3: pousser: Css
s3: pression: tous

Répondre

1

Il y a quelque temps que je blogué sur la façon de sauvegarder un vidage de base de données MySQL d'une application Rails à Amazon S3 en utilisant Rails et l'AWS-S3 RubyGem. Vous devriez être capable d'adapter facilement les instructions pour copier n'importe quel fichier sur S3.