class AssetSync::Config

Attributes

additional_local_file_paths_procs[R]

This is a proc to get additional local files paths Since this is a proc it won't be able to be configured by a YAML file

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

aws_signature_version[RW]

Amazon AWS

azure_storage_access_key[RW]
azure_storage_account_name[RW]

Azure Blob with Fog::AzureRM

cache_asset_regexps[RW]
cdn_distribution_id[RW]
custom_headers[RW]
enabled[RW]
existing_remote_files[RW]
fail_silently[RW]
fog_directory[RW]
fog_host[RW]
fog_path_style[RW]
fog_provider[RW]

FOG configuration

fog_region[RW]
fog_scheme[RW]
google_storage_access_key_id[RW]

Google Storage

google_storage_secret_access_key[RW]

Google Storage

gzip_compression[RW]
ignored_files[RW]
include_manifest[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 62
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 = []
  self.cache_asset_regexps = []
  self.include_manifest = false
  @additional_local_file_paths_procs = []

  load_yml! if defined?(::Rails) && yml_exists?
end

Public Instance Methods

add_local_file_paths(&block) click to toggle source

@api

# File lib/asset_sync/config.rb, line 254
def add_local_file_paths(&block)
  @additional_local_file_paths_procs =
    additional_local_file_paths_procs + [block]
end
additional_local_file_paths() click to toggle source

@api private

This is to be called in Storage
Not to be called by user
# File lib/asset_sync/config.rb, line 262
def additional_local_file_paths
  return [] if additional_local_file_paths_procs.empty?

  # Using `Array()` to ensure it works when single value is returned
  additional_local_file_paths_procs.each_with_object([]) do |proc, paths|
    paths.concat(Array(proc.call))
  end
end
assets_prefix() click to toggle source
# File lib/asset_sync/config.rb, line 149
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 97
def aws?
  fog_provider =~ /aws/i
end
aws_iam?() click to toggle source
# File lib/asset_sync/config.rb, line 105
def aws_iam?
  aws_iam_roles == true
end
aws_rrs?() click to toggle source
# File lib/asset_sync/config.rb, line 101
def aws_rrs?
  aws_reduced_redundancy == true
end
azure_rm?() click to toggle source
# File lib/asset_sync/config.rb, line 129
def azure_rm?
  fog_provider =~ /azurerm/i
end
cache_asset_regexp=(cache_asset_regexp) click to toggle source
# File lib/asset_sync/config.rb, line 133
def cache_asset_regexp=(cache_asset_regexp)
  self.cache_asset_regexps = [cache_asset_regexp]
end
enabled?() click to toggle source
# File lib/asset_sync/config.rb, line 117
def enabled?
  enabled == true
end
existing_remote_files?() click to toggle source
# File lib/asset_sync/config.rb, line 93
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 109
def fail_silently?
  fail_silently || !enabled?
end
fog_options() click to toggle source
# File lib/asset_sync/config.rb, line 208
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
    options.merge!({:host => fog_host}) if fog_host
    options.merge!({:scheme => fog_scheme}) if fog_scheme
    options.merge!({:aws_signature_version => aws_signature_version}) if aws_signature_version
    options.merge!({:path_style => fog_path_style}) if fog_path_style
    options.merge!({:region => fog_region}) if fog_region
  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
    })
    options.merge!({:region => fog_region}) if fog_region
  elsif azure_rm?
    require 'fog/azurerm'
    options.merge!({
      :azure_storage_account_name => azure_storage_account_name,
      :azure_storage_access_key   => azure_storage_access_key,
    })
    options.merge!({:environment => fog_region}) if fog_region
  else
    raise ArgumentError, "AssetSync Unknown provider: #{fog_provider} only AWS, Rackspace and Google are supported currently."
  end

  return options
end
google?() click to toggle source
# File lib/asset_sync/config.rb, line 125
def google?
  fog_provider =~ /google/i
end
gzip?() click to toggle source
# File lib/asset_sync/config.rb, line 89
def gzip?
  self.gzip_compression
end
load_yml!() click to toggle source
# File lib/asset_sync/config.rb, line 158
def load_yml!
  self.enabled                = yml["enabled"] if yml.has_key?('enabled')
  self.fog_provider           = yml["fog_provider"]
  self.fog_host               = yml["fog_host"]
  self.fog_directory          = yml["fog_directory"]
  self.fog_region             = yml["fog_region"]
  self.fog_path_style         = yml["fog_path_style"]
  self.fog_scheme             = yml["fog_scheme"]
  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.aws_signature_version  = yml["aws_signature_version"]
  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")
  self.cache_asset_regexps    = yml['cache_asset_regexps'] if yml.has_key?("cache_asset_regexps")
  self.include_manifest       = yml['include_manifest'] if yml.has_key?("include_manifest")

  self.azure_storage_account_name = yml['azure_storage_account_name'] if yml.has_key?("azure_storage_account_name")
  self.azure_storage_access_key   = yml['azure_storage_access_key'] if yml.has_key?("azure_storage_access_key")

  # 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 113
def log_silently?
  !!self.log_silently
end
manifest_path() click to toggle source
# File lib/asset_sync/config.rb, line 83
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 121
def rackspace?
  fog_provider =~ /rackspace/i
end
yml() click to toggle source
# File lib/asset_sync/config.rb, line 141
def yml
  @yml ||= ::YAML.load(::ERB.new(IO.read(yml_path)).result)[::Rails.env] || {}
end
yml_exists?() click to toggle source
# File lib/asset_sync/config.rb, line 137
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 145
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 277
def default_manifest_directory
  File.join(::Rails.public_path, assets_prefix)
end