Last active
August 29, 2015 14:14
Generate unfingerprinted version of assets and uploading them to s3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class GenerateSDKFiles | |
FILE_NAMES = [ "application.js" ] | |
ONE_HOUR = 3600 | |
def generate | |
Rails.logger.info "Started to sync libraries #{FILE_NAMES}" | |
FILE_NAMES.each do |file_name| | |
Rails.logger.info "Syncing #{file_name}" | |
asset_name = prefix(assets[file_name]) | |
gzip_asset_name = prefix(assets[file_name]) + ".gz" | |
if File.exists? asset_name | |
create_file file_name, File.open(asset_name) | |
end | |
if File.exists? gzip_asset_name | |
create_gzip_file file_name + ".gz", File.open(gzip_asset_name) | |
end | |
Rails.logger.info "Synced #{file_name}" | |
end | |
end | |
private | |
def prefix(asset) | |
"public/assets/#{asset}" | |
end | |
def manifest | |
@manifest ||= Sprockets::Manifest.new(ActionView::Base.assets_manifest.environment, ActionView::Base.assets_manifest.dir) | |
end | |
def assets | |
@assets ||= manifest.assets | |
end | |
def connection | |
@connection ||= Fog::Storage.new( | |
provider: 'AWS', | |
aws_access_key_id: APP_CONFIG['aws_key'], | |
aws_secret_access_key: APP_CONFIG['aws_secret'], | |
region: APP_CONFIG['fog_region'] | |
) | |
end | |
def directory | |
@directory ||= connection.directories.get(APP_CONFIG['fog_directory']) | |
end | |
def create_file(file_name, file) | |
directory.files.create( | |
key: "assets/" + file_name, | |
body: file, | |
cache_control: "public, max-age=#{ONE_HOUR}", | |
public: true | |
) | |
end | |
def create_gzip_file(file_name, file) | |
begin | |
directory.files.create( | |
key: "assets/" + file_name, | |
body: file, | |
cache_control: "public, max-age=#{ONE_HOUR}", | |
content_encoding:'gzip', | |
public: true | |
) | |
rescue Exception => e | |
Rails.logger.info "Cannot sync gzip version, reason #{e.to_s}, #{file_name}, #{file.inspect}" | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment