Class: AssetCloud::Asset

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/asset_cloud/asset.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cloud, key, value = nil, metadata = Metadata.non_existing) {|_self| ... } ⇒ Asset

Returns a new instance of Asset.

Yields:

  • (_self)

Yield Parameters:



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/asset_cloud/asset.rb', line 14

def initialize(cloud, key, value = nil,  = .non_existing)
  @new_asset = true
  @cloud     = cloud
  @key       = key
  @value     = value
    = 

  apply_extensions

  if @cloud.blank?
    raise ArgumentError, "cloud is not a valid AssetCloud::Base"
  end

  yield self if block_given?
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



167
168
169
170
171
172
173
# File 'lib/asset_cloud/asset.rb', line 167

def method_missing(method, *args)
  if extension = @extensions.find { |e| e.respond_to?(method) }
    extension.public_send(method, *args)
  else
    super
  end
end

Instance Attribute Details

#cloud ⇒ Object

Returns the value of attribute cloud.



11
12
13
# File 'lib/asset_cloud/asset.rb', line 11

def cloud
  @cloud
end

#extensions ⇒ Object (readonly)

Returns the value of attribute extensions.



12
13
14
# File 'lib/asset_cloud/asset.rb', line 12

def extensions
  @extensions
end

#key ⇒ Object

Returns the value of attribute key.



11
12
13
# File 'lib/asset_cloud/asset.rb', line 11

def key
  @key
end

#metadata ⇒ Object

Returns the value of attribute metadata.



11
12
13
# File 'lib/asset_cloud/asset.rb', line 11

def 
  
end

#new_asset ⇒ Object

Returns the value of attribute new_asset.



11
12
13
# File 'lib/asset_cloud/asset.rb', line 11

def new_asset
  @new_asset
end

#value ⇒ Object

Returns the value of attribute value.



11
12
13
# File 'lib/asset_cloud/asset.rb', line 11

def value
  @value
end

Class Method Details

.at(cloud, key, value = nil, metadata = nil, &block) ⇒ Object



30
31
32
33
34
# File 'lib/asset_cloud/asset.rb', line 30

def self.at(cloud, key, value = nil,  = nil, &block)
  file = self.new(cloud, key, value, ,  &block)
  file.new_asset = false
  file
end

Instance Method Details

#<=>(other) ⇒ Object



36
37
38
# File 'lib/asset_cloud/asset.rb', line 36

def <=>(other)
  cloud.object_id <=> other.cloud.object_id && key <=> other.key
end

#basename ⇒ Object



64
65
66
# File 'lib/asset_cloud/asset.rb', line 64

def basename
  File.basename(@key)
end

#basename_without_ext ⇒ Object



68
69
70
# File 'lib/asset_cloud/asset.rb', line 68

def basename_without_ext
  File.basename(@key, extname)
end

#bucket ⇒ Object



140
141
142
# File 'lib/asset_cloud/asset.rb', line 140

def bucket
  cloud.buckets[bucket_name.to_sym]
end

#bucket_name ⇒ Object



136
137
138
# File 'lib/asset_cloud/asset.rb', line 136

def bucket_name
  @key.split('/').first
end

#created_at ⇒ Object



80
81
82
# File 'lib/asset_cloud/asset.rb', line 80

def created_at
  .created_at
end

#delete ⇒ Object



92
93
94
95
96
97
98
# File 'lib/asset_cloud/asset.rb', line 92

def delete
  if new_asset?
    false
  else
    cloud.delete(key)
  end
end

#dirname ⇒ Object



52
53
54
# File 'lib/asset_cloud/asset.rb', line 52

def dirname
  File.dirname(@key)
end

#exist? ⇒ Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/asset_cloud/asset.rb', line 76

def exist?
  .exist?
end

#extname ⇒ Object



56
57
58
# File 'lib/asset_cloud/asset.rb', line 56

def extname
  File.extname(@key)
end

#format ⇒ Object



60
61
62
# File 'lib/asset_cloud/asset.rb', line 60

def format
  extname.sub('.', '')
end

#handle ⇒ Object



128
129
130
# File 'lib/asset_cloud/asset.rb', line 128

def handle
  basename.to_handle
end

#inspect ⇒ Object



144
145
146
# File 'lib/asset_cloud/asset.rb', line 144

def inspect
  "#<#{self.class.name}: #{key}>"
end

#new_asset? ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/asset_cloud/asset.rb', line 40

def new_asset?
  @new_asset
end

#relative_key ⇒ Object



44
45
46
# File 'lib/asset_cloud/asset.rb', line 44

def relative_key
  @key.split("/",2).last
end

#relative_key_without_ext ⇒ Object



48
49
50
# File 'lib/asset_cloud/asset.rb', line 48

def relative_key_without_ext
  relative_key.gsub(/\.[^.]+$/,"")
end

#respond_to_missing?(method, include_all) ⇒ Boolean

Returns:

  • (Boolean)


175
176
177
# File 'lib/asset_cloud/asset.rb', line 175

def respond_to_missing?(method, include_all)
  @extensions.any? { |extension| extension.respond_to?(method, include_all) } || super
end

#rollback(version) ⇒ Object



154
155
156
157
# File 'lib/asset_cloud/asset.rb', line 154

def rollback(version)
  self.value = cloud.read_version(key, version)
  self
end

#size ⇒ Object



72
73
74
# File 'lib/asset_cloud/asset.rb', line 72

def size
  .size
end

#store ⇒ Object



112
113
114
115
116
117
118
# File 'lib/asset_cloud/asset.rb', line 112

def store
  unless @value.nil?
    @new_asset = false
     = nil
    cloud.write(key, value)
  end
end

#store! ⇒ Object



120
121
122
# File 'lib/asset_cloud/asset.rb', line 120

def store!
  store or raise(AssetNotSaved, "Validation failed: #{errors.join(', ')}")
end

#to_param ⇒ Object



124
125
126
# File 'lib/asset_cloud/asset.rb', line 124

def to_param
  basename
end

#updated_at ⇒ Object



84
85
86
# File 'lib/asset_cloud/asset.rb', line 84

def updated_at
  .updated_at
end

#url(options = {}) ⇒ Object



132
133
134
# File 'lib/asset_cloud/asset.rb', line 132

def url(options = {})
  cloud.url_for key, options
end

#value_hash ⇒ Object



88
89
90
# File 'lib/asset_cloud/asset.rb', line 88

def value_hash
  .value_hash
end

#version_details ⇒ Object



163
164
165
# File 'lib/asset_cloud/asset.rb', line 163

def version_details
  cloud.version_details(key)
end

#versioned? ⇒ Boolean

versioning

Returns:

  • (Boolean)


150
151
152
# File 'lib/asset_cloud/asset.rb', line 150

def versioned?
  bucket.versioned?
end

#versions ⇒ Object



159
160
161
# File 'lib/asset_cloud/asset.rb', line 159

def versions
  cloud.versions(key)
end