Module: Gluttonberg::Library::Storage::S3::ClassMethods

Defined in:
lib/gluttonberg/library/storage/s3.rb

Constant Summary collapse

TEMP_ASSET_DIRECTORY =

It run when the engine is loaded. It makes sure that all the required directories for storing assets are in the public dir, creating them if they are missing. It also stores the various paths so they can be retreived using the assets_dir method.

"tmp/user_assets"

Class Method Summary collapse

Class Method Details

.bucket_handleObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/gluttonberg/library/storage/s3.rb', line 33

def self.bucket_handle
  key_id = S3::ClassMethods.s3_server_key_id
  key_val = S3::ClassMethods.s3_server_access_key
  s3_server_url = S3::ClassMethods.s3_server_url
  s3_bucket = S3::ClassMethods.s3_bucket_name
  if !key_id.blank? && !key_val.blank? && !s3_server_url.blank? && !s3_bucket.blank?
    s3 = Aws::S3.new(key_id, key_val, {:server => s3_server_url})
    bucket = s3.bucket(s3_bucket)
  else
    nil
  end
end

.migrate_file_to_s3(asset_hash, file_name) ⇒ Object

takes file from public/assets folder and upload to s3 if s3 info is given in CMS settings



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/gluttonberg/library/storage/s3.rb', line 47

def self.migrate_file_to_s3(asset_hash , file_name)
  bucket = bucket_handle
  unless bucket.blank?
    local_file = "public/user_assets/" + asset_hash + "/" + file_name
    key_for_s3 = "user_assets/" + asset_hash + "/" + file_name
    date = Time.now+1.years
    key = bucket.key(key_for_s3, true)
    asset = Gluttonberg::Asset.where(:asset_hash => asset_hash).first
    unless asset.blank?
      puts " Copying #{local_file} to #{S3::ClassMethods.s3_bucket_name}"
      unless asset.mime_type.blank?
        key.put(File.open(local_file), 'public-read', {"Expires" => date.rfc2822, "content-type" => asset.mime_type})
      else
        key.put(File.open(local_file), 'public-read', {"Expires" => date.rfc2822})
      end
      Gluttonberg::Asset.update_attributes(:copied_to_s3 => true)
      puts "Copied"
    end
  end
end

.s3_bucket_nameObject



21
22
23
# File 'lib/gluttonberg/library/storage/s3.rb', line 21

def self.s3_bucket_name
  Gluttonberg::Setting.get_setting("s3_bucket")
end

.s3_server_access_keyObject



29
30
31
# File 'lib/gluttonberg/library/storage/s3.rb', line 29

def self.s3_server_access_key
  Gluttonberg::Setting.get_setting("s3_access_key")
end

.s3_server_key_idObject



25
26
27
# File 'lib/gluttonberg/library/storage/s3.rb', line 25

def self.s3_server_key_id
  Gluttonberg::Setting.get_setting("s3_key_id")
end

.s3_server_urlObject



17
18
19
# File 'lib/gluttonberg/library/storage/s3.rb', line 17

def self.s3_server_url
  Gluttonberg::Setting.get_setting("s3_server_url")
end

.storage_setupObject



11
12
13
14
15
# File 'lib/gluttonberg/library/storage/s3.rb', line 11

def self.storage_setup
  Library.set_asset_root("user_assets", TEMP_ASSET_DIRECTORY, "public/test_assets")
  FileUtils.mkdir(Library.root) unless File.exists?(Library.root) || File.symlink?(Library.root)
  FileUtils.mkdir(Library.tmp_root) unless File.exists?(Library.tmp_root) || File.symlink?(Library.tmp_root)
end