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"
Instance Method Summary collapse
- #bucket_handle ⇒ Object
-
#migrate_file_to_s3(asset_hash, file_name, mime_type = '') ⇒ Object
takes file from public/assets folder and upload to s3 if s3 info is given in CMS settings.
- #s3_bucket_name ⇒ Object
- #s3_server_access_key ⇒ Object
- #s3_server_key_id ⇒ Object
- #s3_server_url ⇒ Object
- #storage_setup ⇒ Object
- #upload_file_to(asset, bucket_key, mime_type, local_file) ⇒ Object
Instance Method Details
#bucket_handle ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/gluttonberg/library/storage/s3.rb', line 35 def bucket_handle key_id = self.s3_server_key_id key_val = self.s3_server_access_key s3_server_url = self.s3_server_url s3_bucket = self.s3_bucket_name if !key_id.blank? && !key_val.blank? && !s3_server_url.blank? && !s3_bucket.blank? s3 = AWS::S3.new({ :access_key_id => key_id, :secret_access_key => key_val, :server => s3_server_url }) bucket = s3.buckets[s3_bucket] else nil end end |
#migrate_file_to_s3(asset_hash, file_name, mime_type = '') ⇒ Object
takes file from public/assets folder and upload to s3 if s3 info is given in CMS settings
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/gluttonberg/library/storage/s3.rb', line 53 def migrate_file_to_s3(asset_hash , file_name, mime_type='') bucket = bucket_handle if bucket != nil key_for_s3 = "user_assets/" + asset_hash + "/" + file_name asset = Gluttonberg::Asset.where(:asset_hash => asset_hash).first unless asset.blank? local_file = asset.tmp_directory + "/" + file_name local_file = "public/user_assets/" + asset_hash + "/" + file_name unless File.exist?(local_file) puts " Copying #{local_file} to #{self.s3_bucket_name}" self.upload_file_to(asset, bucket.objects[key_for_s3], mime_type, local_file) asset.update_attributes(:copied_to_s3 => true) end end end |
#s3_bucket_name ⇒ Object
23 24 25 |
# File 'lib/gluttonberg/library/storage/s3.rb', line 23 def s3_bucket_name Gluttonberg::Setting.get_setting("s3_bucket") end |
#s3_server_access_key ⇒ Object
31 32 33 |
# File 'lib/gluttonberg/library/storage/s3.rb', line 31 def s3_server_access_key Gluttonberg::Setting.get_setting("s3_access_key") end |
#s3_server_key_id ⇒ Object
27 28 29 |
# File 'lib/gluttonberg/library/storage/s3.rb', line 27 def s3_server_key_id Gluttonberg::Setting.get_setting("s3_key_id") end |
#s3_server_url ⇒ Object
19 20 21 |
# File 'lib/gluttonberg/library/storage/s3.rb', line 19 def s3_server_url Gluttonberg::Setting.get_setting("s3_server_url") end |
#storage_setup ⇒ Object
13 14 15 16 17 |
# File 'lib/gluttonberg/library/storage/s3.rb', line 13 def 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 |
#upload_file_to(asset, bucket_key, mime_type, local_file) ⇒ Object
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/gluttonberg/library/storage/s3.rb', line 68 def upload_file_to(asset, bucket_key, mime_type, local_file) = { :expires => (Time.now+1.years).rfc2822, :acl => :public_read } mime_type = asset.mime_type if mime_type.blank? [:content_type] = mime_type unless mime_type.blank? response = bucket_key.write(File.open(File.join((Rails.env == 'test' ? Engine.root : Rails.root),local_file)), ) puts "Copied" end |