|
|
@@ -0,0 +1,68 @@ |
|
|
# NullStorage provider for CarrierWave for use in tests. Doesn't actually |
|
|
# upload or store files but allows test to pass as if files were stored and |
|
|
# the use of fixtures. |
|
|
class NullStorage |
|
|
attr_reader :uploader |
|
|
|
|
|
def initialize(uploader) |
|
|
@uploader = uploader |
|
|
end |
|
|
|
|
|
def identifier |
|
|
uploader.filename |
|
|
end |
|
|
|
|
|
def store!(_file) |
|
|
true |
|
|
end |
|
|
|
|
|
def retrieve!(_identifier) |
|
|
true |
|
|
end |
|
|
end |
|
|
|
|
|
CarrierWave.configure do |config| |
|
|
# Make the tmp dir work on Heroku |
|
|
config.cache_dir = "#{Rails.root}/tmp/uploads" |
|
|
|
|
|
if Rails.env.production? || Rails.env.staging? |
|
|
config.storage :fog |
|
|
config.fog_credentials = { |
|
|
provider: "AWS", |
|
|
# When precompiling assets Fog will be initialized and needs to be |
|
|
# initialized (even though it will never touch S3), provide some values |
|
|
# to prevent Fog gem from crashing during initialize wihtout actually |
|
|
# giving away the keys. |
|
|
aws_access_key_id: ENV["S3_KEY"] || "S3_KEY", |
|
|
aws_secret_access_key: ENV["S3_SECRET"] || "S3_SECRET" |
|
|
} |
|
|
|
|
|
config.fog_directory = ENV["S3_BUCKET"] |
|
|
# App requires explicit protocol to be specified for uploaded assets |
|
|
# Do not change to "//..." like we are doing with the other asset hosts |
|
|
config.asset_host = "https://#{ENV["S3_CDN_HOST"]}" |
|
|
config.fog_attributes = { "Cache-Control" => "max-age=315576000" } |
|
|
|
|
|
elsif Rails.env.development? |
|
|
config.storage :file |
|
|
config.asset_host = "http://#{ENV["S3_CDN_HOST"] || ENV["HOST"]}" |
|
|
|
|
|
elsif Rails.env.test? |
|
|
config.storage NullStorage |
|
|
# Required to prevent FactoryGirl from giving an infuriating exception |
|
|
# ArgumentError: wrong exec option |
|
|
# It also speeds up tests so it's a good idea |
|
|
config.enable_processing = false |
|
|
end |
|
|
end |
|
|
|
|
|
# https://gist.github.com/1058477 |
|
|
module CarrierWave::MiniMagick |
|
|
def quality(percentage) |
|
|
manipulate! do |img| |
|
|
img.quality(percentage.to_s) |
|
|
img = yield(img) if block_given? |
|
|
img |
|
|
end |
|
|
end |
|
|
end |