Skip to content

Instantly share code, notes, and snippets.

@terut
Created November 21, 2011 13:33
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save terut/1382625 to your computer and use it in GitHub Desktop.
Save terut/1382625 to your computer and use it in GitHub Desktop.
Clean up carrierwave's files for rspec.
RSpec.configure do |config|
# ...
config.after(:all) do
if Rails.env.test?
FileUtils.rm_rf(Dir["#{Rails.root}/spec/support/uploads"])
end
end
end
# put logic in this file or initalizer/carrierwave.rb
if defined?(CarrierWave)
CarrierWave::Uploader::Base.descendants.each do |klass|
next if klass.anonymous?
klass.class_eval do
def cache_dir
"#{Rails.root}/spec/support/uploads/tmp"
end
def store_dir
"#{Rails.root}/spec/support/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
end
end
@gbpereira
Copy link

@lowderdev
Copy link

lowderdev commented Aug 10, 2017

Woohoo! Thanks @gbpereira!
This was the line that I needed before the if defined? (putting here for posterity):

Dir["#{Rails.root}/app/uploaders/*.rb"].each { |file| require file }

@andiskiy
Copy link

I'm use carrierwave (2.0.1) with rails 6.0.0 and it doesn't work for me.
My solution:
initalizer/carrierwave.rb

CarrierWave.configure do |config|
  config.asset_host = ActionController::Base.asset_host
end

if Rails.env.test?
  CarrierWave.configure do |config|
    config.root = Rails.root.join('spec/support')
    config.storage = :file
    config.enable_processing = false
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment