Paperclip save to disk and s3

I have a standard Paperclip setup that saves a file to my disk. In
addition I would also like the file saved to my amazon s3 bucket.


after_save :copy_to_s3



  def copy_to_s3
   has_attached_file :photo,
   :storage => :s3,
   :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
   :styles => {
   :thumb => "100x100#",
   :small => "750x750>" }
  end

This is giving the error: undefined method `has_attached_file’

Because it’s in another scope of object
And it’s nothing give to u, it’s one define some methods

U can open paperclip source and find out how call upload to s3, or u can
use aws-s3 gem, which simple, s3 is http based storage, simple http
query, and all a done ))

Sent from my iPad

Scratch the idea then.

So I found this gem called db2s3 which is used to backup the database
with a simple rake command. I having trouble modifying it accordingly.

require ‘activesupport’
require ‘aws/s3’
require ‘tempfile’

class BLUECAT
class Config
end

def initialize
end

def full_backup

file_name = "system-#{Time.now.utc.strftime("%Y%m%d%H%M")}.gz"


store.store(file_name, open(backup_directory.path))
store.store(most_recent_dump_file_name, file_name)

end

private

def backup_directory
backup_file = Tempfile.new(“dump”)

 cmd = "cp -r #{RAILS_ROOT}/public/system/ bucket"
 cmd += " | gzip > #{backup_file.path}"
 run(cmd)

 backup_file

end

def store
@store ||= S3Store.new
end

def most_recent_dump_file_name
“most-recent-dump.txt”
end

def run(command)
result = system(command)
raise(“error, process exited with status #{$?.exitstatus}”) unless
result
end

def db_credentials
ActiveRecord::Base.connection.instance_eval { @config } # Dodgy!
end

class S3Store
def initialize
@connected = false
end

def ensure_connected
  return if @connected
  AWS::S3::Base.establish_connection!(BLUECAT::Config::S3.slice(:access_key_id, 

:secret_access_key).merge(:use_ssl => true))
AWS::S3::Bucket.create(bucket)
@connected = true
end

def store(file_name, file)
  ensure_connected
  AWS::S3::S3Object.store(file_name, file, bucket)
end

def fetch(file_name)
  ensure_connected
  AWS::S3::S3Object.find(file_name, bucket)

  file = Tempfile.new("dump")
  open(file.path, 'w') do |f|
    AWS::S3::S3Object.stream(file_name, bucket) do |chunk|
      f.write chunk
    end
  end
  file
end

def list
  ensure_connected
  AWS::S3::Bucket.find(bucket).objects.collect {|x| x.path }
end

def delete(file_name)
  if object = AWS::S3::S3Object.find(file_name, bucket)
    object.delete
  end
end

private

def bucket
  BLUECAT::Config::S3[:bucket]
end

end

end

In the backup_directory method, I can’t figure out how to get it to copy
the system directory into my s3 bucket.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs