Это несколько сложное решение, но вы можете сделать это следующим образом: сначала используйте before_filter, чтобы установить переменную, которая будет храниться, если запрос SSL или нет:
class ApplicationController < ActionController::Base
before_filter :set_current_request
after_filter :unset_current_request
protected
def set_current_request
Thread.current[:current_request] = request
end
def unset_current_request
Thread.current[:current_request] = nil
end
end
С этим определением выВам нужно будет определить интерполяцию Paperclip:
Paperclip.interpolates :assets_host do |attachment, style|
request = Thread.current[:current_request]
if request.ssl?
"#{request.protocol}#{request.host_with_port}"
else
"http://cdn.somehost.com"
end
end
Затем вы можете включить эту интерполяцию в вашу конфигурацию:
Paperclip::Attachment.default_options.update({
:url => ":assets_host/system/:attachment/:id/:style/:filename",
:path => ":rails_root/public/system/:attachment/:id/:style/:filename"
})
Я не сделал это точно так же, но у меня естьмного раз использовал интерполяции (и это также, как хранилище S3 делает свое волшебство), поэтому оно должно работать.