class AssetSync::Config

Attributes

always_upload[RW]
aws_access_key_id[RW]

Amazon AWS

aws_iam_roles[RW]

Amazon AWS

aws_reduced_redundancy[RW]

Amazon AWS

aws_secret_access_key[RW]

Amazon AWS

cdn_distribution_id[RW]
custom_headers[RW]
enabled[RW]
existing_remote_files[RW]
fail_silently[RW]
fog_directory[RW]
fog_provider[RW]

FOG configuration

fog_region[RW]
google_storage_access_key_id[RW]

Google Storage

google_storage_secret_access_key[RW]

Google Storage

gzip_compression[RW]
ignored_files[RW]
invalidate[RW]
log_silently[RW]
manifest[RW]
prefix[RW]
public_path[RW]
rackspace_api_key[RW]

Rackspace

rackspace_auth_url[RW]

Rackspace

rackspace_username[RW]

Rackspace

run_on_precompile[RW]

Public Class Methods

new() click to toggle source
# 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

Public Instance Methods

assets_prefix() click to toggle source
# 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?() click to toggle source
# File lib/asset_sync/config.rb, line 87
def aws?
  fog_provider =~ /aws/i
end
aws_iam?() click to toggle source
# File lib/asset_sync/config.rb, line 95
def aws_iam?
  aws_iam_roles == true
end
aws_rrs?() click to toggle source
# File lib/asset_sync/config.rb, line 91
def aws_rrs?
  aws_reduced_redundancy == true
end
enabled?() click to toggle source
# File lib/asset_sync/config.rb, line 107
def enabled?
  enabled == true
end
existing_remote_files?() click to toggle source
# File lib/asset_sync/config.rb, line 83
def existing_remote_files?
  ['keep', 'ignore'].include?(self.existing_remote_files)
end
fail_silently?() click to toggle source
# File lib/asset_sync/config.rb, line 99
def fail_silently?
  fail_silently || !enabled?
end
fog_options() click to toggle source
# 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?() click to toggle source
# File lib/asset_sync/config.rb, line 115
def google?
  fog_provider =~ /google/i
end
gzip?() click to toggle source
# File lib/asset_sync/config.rb, line 79
def gzip?
  self.gzip_compression
end
load_yml!() click to toggle source
# 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?() click to toggle source
# File lib/asset_sync/config.rb, line 103
def log_silently?
  ENV['RAILS_GROUPS'] == 'assets' || !!self.log_silently
end
manifest_digest_path() click to toggle source
# 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_path() click to toggle source
# 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?() click to toggle source
# File lib/asset_sync/config.rb, line 111
def rackspace?
  fog_provider =~ /rackspace/i
end
yml() click to toggle source
# 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?() click to toggle source
# File lib/asset_sync/config.rb, line 119
def yml_exists?
  defined?(Rails.root) ? File.exist?(self.yml_path) : false
end
yml_path() click to toggle source
# File lib/asset_sync/config.rb, line 131
def yml_path
  Rails.root.join("config", "asset_sync.yml").to_s
end

Private Instance Methods

default_manifest_directory() click to toggle source
# File lib/asset_sync/config.rb, line 222
def default_manifest_directory
  File.join(Rails.public_path, assets_prefix)
end