Class: AssetSync::Config

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/asset_sync/config.rb

Defined Under Namespace

Classes: Invalid

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/asset_sync/config.rb', line 49

def initialize
  self.fog_region = nil
  self.existing_remote_files = 'keep'
  self.gzip_compression = false
  self.manifest = false
  self.fail_silently = false
  self.log_silently = true
  self.always_upload = []
  self.ignored_files = []
  self.custom_headers = {}
  self.enabled = true
  self.run_on_precompile = true
  self.cdn_distribution_id = nil
  self.invalidate = []
  load_yml! if defined?(Rails) && yml_exists?
end

Instance Attribute Details

#always_uploadObject

Returns the value of attribute always_upload.



13
14
15
# File 'lib/asset_sync/config.rb', line 13

def always_upload
  @always_upload
end

#aws_access_key_idObject

Amazon AWS



29
30
31
# File 'lib/asset_sync/config.rb', line 29

def aws_access_key_id
  @aws_access_key_id
end

#aws_iam_rolesObject

Amazon AWS



29
30
31
# File 'lib/asset_sync/config.rb', line 29

def aws_iam_roles
  @aws_iam_roles
end

#aws_reduced_redundancyObject

Amazon AWS



29
30
31
# File 'lib/asset_sync/config.rb', line 29

def aws_reduced_redundancy
  @aws_reduced_redundancy
end

#aws_secret_access_keyObject

Amazon AWS



29
30
31
# File 'lib/asset_sync/config.rb', line 29

def aws_secret_access_key
  @aws_secret_access_key
end

#cdn_distribution_idObject

Returns the value of attribute cdn_distribution_id.



21
22
23
# File 'lib/asset_sync/config.rb', line 21

def cdn_distribution_id
  @cdn_distribution_id
end

#custom_headersObject

Returns the value of attribute custom_headers.



18
19
20
# File 'lib/asset_sync/config.rb', line 18

def custom_headers
  @custom_headers
end

#enabledObject

Returns the value of attribute enabled.



17
18
19
# File 'lib/asset_sync/config.rb', line 17

def enabled
  @enabled
end

#existing_remote_filesObject

AssetSync



8
9
10
# File 'lib/asset_sync/config.rb', line 8

def existing_remote_files
  @existing_remote_files
end

#fail_silentlyObject

Returns the value of attribute fail_silently.



11
12
13
# File 'lib/asset_sync/config.rb', line 11

def fail_silently
  @fail_silently
end

#fog_directoryObject

e.g. ‘the-bucket-name’



25
26
27
# File 'lib/asset_sync/config.rb', line 25

def fog_directory
  @fog_directory
end

#fog_providerObject

FOG configuration



24
25
26
# File 'lib/asset_sync/config.rb', line 24

def fog_provider
  @fog_provider
end

#fog_regionObject

e.g. ‘eu-west-1’



26
27
28
# File 'lib/asset_sync/config.rb', line 26

def fog_region
  @fog_region
end

#google_storage_access_key_idObject

Google Storage



35
36
37
# File 'lib/asset_sync/config.rb', line 35

def google_storage_access_key_id
  @google_storage_access_key_id
end

#google_storage_secret_access_keyObject

Google Storage



35
36
37
# File 'lib/asset_sync/config.rb', line 35

def google_storage_secret_access_key
  @google_storage_secret_access_key
end

#gzip_compressionObject

Returns the value of attribute gzip_compression.



9
10
11
# File 'lib/asset_sync/config.rb', line 9

def gzip_compression
  @gzip_compression
end

#ignored_filesObject

Returns the value of attribute ignored_files.



14
15
16
# File 'lib/asset_sync/config.rb', line 14

def ignored_files
  @ignored_files
end

#invalidateObject

Returns the value of attribute invalidate.



20
21
22
# File 'lib/asset_sync/config.rb', line 20

def invalidate
  @invalidate
end

#log_silentlyObject

Returns the value of attribute log_silently.



12
13
14
# File 'lib/asset_sync/config.rb', line 12

def log_silently
  @log_silently
end

#manifestObject

Returns the value of attribute manifest.



10
11
12
# File 'lib/asset_sync/config.rb', line 10

def manifest
  @manifest
end

#prefixObject

Returns the value of attribute prefix.



15
16
17
# File 'lib/asset_sync/config.rb', line 15

def prefix
  @prefix
end

#public_pathObject

Returns the value of attribute public_path.



16
17
18
# File 'lib/asset_sync/config.rb', line 16

def public_path
  @public_path
end

#rackspace_api_keyObject

Rackspace



32
33
34
# File 'lib/asset_sync/config.rb', line 32

def rackspace_api_key
  @rackspace_api_key
end

#rackspace_auth_urlObject

Rackspace



32
33
34
# File 'lib/asset_sync/config.rb', line 32

def rackspace_auth_url
  @rackspace_auth_url
end

#rackspace_usernameObject

Rackspace



32
33
34
# File 'lib/asset_sync/config.rb', line 32

def rackspace_username
  @rackspace_username
end

#run_on_precompileObject

Returns the value of attribute run_on_precompile.



19
20
21
# File 'lib/asset_sync/config.rb', line 19

def run_on_precompile
  @run_on_precompile
end

Instance Method Details

#assets_prefixObject



135
136
137
138
# File 'lib/asset_sync/config.rb', line 135

def assets_prefix
  # Fix for Issue #38 when Rails.config.assets.prefix starts with a slash
  self.prefix || Rails.application.config.assets.prefix.sub(/^\//, '')
end

#aws?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/asset_sync/config.rb', line 87

def aws?
  fog_provider =~ /aws/i
end

#aws_iam?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/asset_sync/config.rb', line 95

def aws_iam?
  aws_iam_roles == true
end

#aws_rrs?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/asset_sync/config.rb', line 91

def aws_rrs?
  aws_reduced_redundancy == true
end

#enabled?Boolean

Returns:

  • (Boolean)


107
108
109
# File 'lib/asset_sync/config.rb', line 107

def enabled?
  enabled == true
end

#existing_remote_files?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/asset_sync/config.rb', line 83

def existing_remote_files?
  ['keep', 'ignore'].include?(self.existing_remote_files)
end

#fail_silently?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/asset_sync/config.rb', line 99

def fail_silently?
  fail_silently || !enabled?
end

#fog_optionsObject



185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
# File 'lib/asset_sync/config.rb', line 185

def fog_options
  options = { :provider => fog_provider }
  if aws?
    if aws_iam?
      options.merge!({
        :use_iam_profile => true
      })
    else
      options.merge!({
        :aws_access_key_id => aws_access_key_id,
        :aws_secret_access_key => aws_secret_access_key
      })
    end
  elsif rackspace?
    options.merge!({
      :rackspace_username => rackspace_username,
      :rackspace_api_key => rackspace_api_key
    })
    options.merge!({
      :rackspace_region => fog_region
    }) if fog_region
    options.merge!({ :rackspace_auth_url => rackspace_auth_url }) if rackspace_auth_url
  elsif google?
    options.merge!({
      :google_storage_secret_access_key => google_storage_secret_access_key,
      :google_storage_access_key_id => google_storage_access_key_id
    })
  else
    raise ArgumentError, "AssetSync Unknown provider: #{fog_provider} only AWS, Rackspace and Google are supported currently."
  end

  options.merge!({:region => fog_region}) if fog_region && !rackspace?
  return options
end

#google?Boolean

Returns:

  • (Boolean)


115
116
117
# File 'lib/asset_sync/config.rb', line 115

def google?
  fog_provider =~ /google/i
end

#gzip?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/asset_sync/config.rb', line 79

def gzip?
  self.gzip_compression
end

#load_yml!Object



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/asset_sync/config.rb', line 144

def load_yml!
  self.enabled                = yml["enabled"] if yml.has_key?('enabled')
  self.fog_provider           = yml["fog_provider"]
  self.fog_directory          = yml["fog_directory"]
  self.fog_region             = yml["fog_region"]
  self.aws_access_key_id      = yml["aws_access_key_id"]
  self.aws_secret_access_key  = yml["aws_secret_access_key"]
  self.aws_reduced_redundancy = yml["aws_reduced_redundancy"]
  self.aws_iam_roles          = yml["aws_iam_roles"]
  self.rackspace_username     = yml["rackspace_username"]
  self.rackspace_auth_url     = yml["rackspace_auth_url"] if yml.has_key?("rackspace_auth_url")
  self.rackspace_api_key      = yml["rackspace_api_key"]
  self.google_storage_secret_access_key = yml["google_storage_secret_access_key"]
  self.google_storage_access_key_id     = yml["google_storage_access_key_id"]
  self.existing_remote_files  = yml["existing_remote_files"] if yml.has_key?("existing_remote_files")
  self.gzip_compression       = yml["gzip_compression"] if yml.has_key?("gzip_compression")
  self.manifest               = yml["manifest"] if yml.has_key?("manifest")
  self.fail_silently          = yml["fail_silently"] if yml.has_key?("fail_silently")
  self.always_upload          = yml["always_upload"] if yml.has_key?("always_upload")
  self.ignored_files          = yml["ignored_files"] if yml.has_key?("ignored_files")
  self.custom_headers          = yml["custom_headers"] if yml.has_key?("custom_headers")
  self.run_on_precompile      = yml["run_on_precompile"] if yml.has_key?("run_on_precompile")
  self.invalidate             = yml["invalidate"] if yml.has_key?("invalidate")
  self.cdn_distribution_id    = yml['cdn_distribution_id'] if yml.has_key?("cdn_distribution_id")

  # TODO deprecate the other old style config settings. FML.
  self.aws_access_key_id      = yml["aws_access_key"] if yml.has_key?("aws_access_key")
  self.aws_secret_access_key  = yml["aws_access_secret"] if yml.has_key?("aws_access_secret")
  self.fog_directory          = yml["aws_bucket"] if yml.has_key?("aws_bucket")
  self.fog_region             = yml["aws_region"] if yml.has_key?("aws_region")

  # TODO deprecate old style config settings
  self.aws_access_key_id      = yml["access_key_id"] if yml.has_key?("access_key_id")
  self.aws_secret_access_key  = yml["secret_access_key"] if yml.has_key?("secret_access_key")
  self.fog_directory          = yml["bucket"] if yml.has_key?("bucket")
  self.fog_region             = yml["region"] if yml.has_key?("region")

  self.public_path            = yml["public_path"] if yml.has_key?("public_path")
end

#log_silently?Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/asset_sync/config.rb', line 103

def log_silently?
  ENV['RAILS_GROUPS'] == 'assets' || !!self.log_silently
end

#manifest_digest_pathObject



66
67
68
69
70
71
# File 'lib/asset_sync/config.rb', line 66

def manifest_digest_path
  manifest_path = Dir["#{default_manifest_directory}/manifest-*.json"].try(:last)
  if manifest_path
    "#{assets_prefix}/#{File.basename(manifest_path)}"
  end
end

#manifest_pathObject



73
74
75
76
77
# File 'lib/asset_sync/config.rb', line 73

def manifest_path
  directory =
    Rails.application.config.assets.manifest || default_manifest_directory
  File.join(directory, "manifest.yml")
end

#rackspace?Boolean

Returns:

  • (Boolean)


111
112
113
# File 'lib/asset_sync/config.rb', line 111

def rackspace?
  fog_provider =~ /rackspace/i
end

#ymlObject



123
124
125
126
127
128
129
# File 'lib/asset_sync/config.rb', line 123

def yml
  begin
    @yml ||= YAML.load(ERB.new(IO.read(yml_path)).result)[Rails.env] rescue nil || {}
  rescue Psych::SyntaxError
    @yml = {}
  end
end

#yml_exists?Boolean

Returns:

  • (Boolean)


119
120
121
# File 'lib/asset_sync/config.rb', line 119

def yml_exists?
  defined?(Rails.root) ? File.exist?(self.yml_path) : false
end

#yml_pathObject



131
132
133
# File 'lib/asset_sync/config.rb', line 131

def yml_path
  Rails.root.join("config", "asset_sync.yml").to_s
end