Rails 4 + Paperclip + S3: Изменение конечной точки для доступа к ведро S3 в модели пользователя?

Должно быть довольно простое решение этого вопроса, я думаю, но я не могу заставить его работать. У меня есть приложение Rails 4, модель пользователя с настройкой атрибута photograph с помощью Paperclip, и я связал его с S3.

Здесь модель пользователя:

  has_attached_file :photograph,
  :styles => { :medium => "300x300>", :thumb => "100x100>" },
  :storage => :s3,
  :bucket => " my-bucket-name ",
  :default_url => '/images/:attachment/missing_:style.png',
  :s3_credentials => S3_CREDENTIALS

Изображение добавляется в мой ведро S3 просто отлично, но когда я пытаюсь сделать снимок с <%= image_tag @user.photograph.url %>, он не появляется. При дальнейшей проверке URL изображения:

http://s3.amazonaws.com/my-bucket-name/users/photographs/000/000/001/original/20121103_132556.jpg?1388619625

Если я следую этому URL-адресу в браузере, я вижу XML файл следующим образом:

<Error>
  <Code>PermanentRedirect</Code>
  <Message>
    The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
  </Message>
  <RequestId> ... </RequestId>
  <Bucket>my-bucket-name</Bucket>
  <HostId>
    ...
  </HostId>
  <Endpoint>my-bucket-name.s3.amazonaws.com</Endpoint>
</Error>

Следовательно, когда я следую URL-адресу http://my-bucket-name.s3.amazonaws.com/actives/photographs/000/000/001/original/20121103_132556.jpg?1388619625 в браузере, я вижу, что изображение просто отлично.

Как изменить конечную точку в моей модели пользователя? Каков нормальный способ справиться с этим? Я должен добавить, что мое ведро S3 - регион Северной Калифорнии. Спасибо.

Ответ 1

Решено! Просто добавьте эти две строки в мою модель User:

  :url =>':s3_domain_url',
  :path => '/:class/:attachment/:id_partition/:style/:filename',

Ответ 2

Иногда проблема заключается в том, что ваше ведро не находится на сервере usb (по умолчанию amazon).

Вы можете изменить конечную точку, используя этот

:s3_host_name => 'your_host_name'

Вы можете найти свое имя хоста по следующей ссылке в столбце конечной точки Конечные точки Amazon

Если вы не знаете свою область ведра, вы можете найти ее в свойствах ведра.