Чтобы дать небольшой контекст, в настоящее время я создаю приложение с рецептами, используя Rails API и интерфейс Ember. Чтобы получить рецепты, я просматриваю определенные веб-сайты и сохраняю информацию в базе данных PG.

Поскольку изображений так много, я хотел бы сохранить их на S3. Раньше я использовал Paperclip для обработки загрузки изображений в S3, но поскольку мое приложение rails - это просто API, я не совсем уверен, какой подход / инструменты лучше всего. Кто нибудь подобное делал?

Ответы (1)

Если ваша корзина S3 общедоступна (это идеально и эффективно), просто используйте URL-адреса S3 для ваших изображений вместо того, чтобы проходить через Rails.

Если вам нужно пройти через Rails, потому что вы хотите, чтобы ваша корзина S3 была закрытой (этот подход более затратен в масштабировании), вы можете получить объекты S3 в действии контроллера и обслуживать их таким образом. Это можно сделать с помощью метода send_data: http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_data

Rough example:

def MediaController < ApplicationController
  def s3_image
    bucket_get_result = G_CLIENT.execute(
      api_method: G_API.objects.get,
      parameters: {bucket: 'my_bucket', object: params.require(:object_name), alt: 'media'}
    )
    send_data bucket_get_result.body, :disposition => 'inline'
  end
end

2022 WebDevInsider