Разверните мои css и javascripts с помощью capistrano для amazon S3 - PullRequest
0 голосов
/ 15 июля 2010

У меня есть аккаунт в Amazon S3, и я использую его только для моих css и javascript и фотографий, таких как CDN. Я хочу выполнить задачу capistrano для отправки моих javascripts и css и фотографий в мое ведро в Amazon S3. Как я?

tahnks.

спасибо, Джон Топли Основываясь на вашем коде, я сделал, как показано ниже.

настроить ваш config / s3.yaml

access_key_id:
secret_access_key:
ведро:

Библиотека / задачи / 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

конец

для развертывания ресурсов в amazon s3 грабли s3: push: images
грабли s3: push: js
s3: толчок: CSS
s3: нажмите: все

1 Ответ

1 голос
/ 15 июля 2010

Некоторое время назад я писал о том, как сделать резервную копию дампа базы данных MySQL приложения Rails в Amazon S3 с помощью Rails и AWS-S3 RubyGem. Вы должны быть в состоянии легко адаптировать инструкции для копирования любого файла на S3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...