Мое приложение использует следующие камни:REFILE Gem Image Ссылки Разбейте Когда я нажимаю Новый Обязаться Heroku
gem "refile", require: "refile/rails"
gem "refile-s3"
gem "refile-mini_magick"
Что мое приложение делает то, что он будет загружать файлы изображений в экземпляре AWS S3, а затем получает извлекаться используя вспомогательные методы из драгоценного камня Refile.
Все работает должным образом, когда я запускаю его локально.
Проблема в том, что я нажимаю свое приложение на Heroku, я могу загружать изображения и отображать их правильно. Тем не менее, когда я нажимаю новую фиксацию на Heroku, все предыдущие ссылки ссылок нарушаются.
Я проверил, что file_id изображения на странице - это тот же файл_ид изображения в базе данных Heroku.
Это моя форма загрузки для моих изображений:
<div class="field">
<%= f.label :images_files %><br>
<%= f.attachment_field :images_files, multiple: true, presigned: true, direct: true %>
</div>
Это фрагмент моего изображения показывается:
<%= attachment_image_tag(project.images.first, :file, :fill, 750, 400) %>
я правильно установить свои переменные окружения на Heroku, так что он знает, ключи к моему экземпляру AWS (идентификатор ключа доступа, секретный ключ доступа и имя ведра).
Это сбруя загрузить на S3:
# config/initializers/refile.rb
require "refile/s3"
aws = {
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
region: "us-west-1",
bucket: ENV['export S3_BUCKET'],
}
Refile.cache = Refile::S3.new(prefix: "cache", **aws)
Refile.store = Refile::S3.new(prefix: "store", **aws)
Другая вещь, которую я заметил, что мой S3 ведро не держали изображения в нужную папку, если я загрузил через мое приложение Heroku. Однако, если я загрузил изображение с помощью локального сервера, я могу увидеть изображение в своем ведомом S3. Я не уверен, почему, потому что все переменные среды верны, и я дважды проверил это.
Вот отрывок из журнала Heroku пытается загрузить изображение:
2016-01-12T23:04:39.448906+00:00 app[web.1]: Refile::App: Could not find attachment by id: d8fffa94c41f9f0ae1b233d69a75787a9a29340a9a83a831385d84d53ad8
2016-01-12T23:04:39.442789+00:00 heroku[router]: at=info method=GET path="/attachments/8718f3743b8d7c91e296ac5f0e6ea324d1fd2868/store/fit/800/475/aee08fe8f97269
826c51a77a11995c77467e24aa3581563d6f298e0dbf9b/file" host=www.domainname.com request_id=49edc34f-2d37-4ae4-9a58-e6265e00032e fwd="99.100.27.10" dyno=web.1 connect
=1ms service=9ms status=404 bytes=424
Связь с приложением heroku не проходит через S3 и, возможно, сохраняет изображения локально. Это причина, по которой каждый геройский удар разбивает ваши изображения. – uday
Не похоже, что изображения хранятся локально, потому что, если я получаю доступ к прямому приложению через другой компьютер, я могу видеть изображения, которые были загружены после самого нового нажатия. – Tony