CJ Bryan
CJ Bryan

Reputation: 178

CarrierWave Uploader URL Points to the Local Filesystem When Using the Cloud

I'm using Carrierwave in my Rails app to handle image uploads. When I configure the uploader to store the files locally, everything works great. The problem comes when I ask to upload to Rackspace's Cloud Files service. The upload works great, I can see the files in my control panel. The issue is that Carrierwave returns a URL on the uploader as if the file were stored locally. ie: @foo.uploader.url looks like /User/bar/Code/app/public/uploads/yeah.jpeg instead of http://cloudcloud.com/yeah.jpg.

Where am I going wrong?

# config/initializers/carrier_wave.rb

CarrierWave.configure do |config|
  config.storage = :fog

  config.fog_credentials = {
    :provider           => 'Rackspace',
    :rackspace_username => 'foo',
    :rackspace_api_key  => '0f0f0f0f0f0f0f'
  }

  config.fog_directory = 'development-images'
end

# app/uploaders/foo_uploader.rb

class FooUploader < CarrierWave::Uploader::Base
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

Upvotes: 3

Views: 1239

Answers (1)

Magnus Skog
Magnus Skog

Reputation: 146

I took a look at my own code for the Rackspace uploader and the only difference I can see is that I set the fog_host to the CDN url like so:

config.fog_host = "http:/something.rackcdn.com"

Upvotes: 4

Related Questions