Итак, у меня есть форма, которая может отправлять несколько изображений одновременно. Я также написал обертку для Imgur API на Ruby. Моя проблема в том, что, поскольку это происходит полностью синхронно, это занимает вечность и время ожидания даже для 10 изображений. Мне интересно, есть ли лучший способ, который мог бы обрабатывать больше изображений.
Все, о чем я могу думать, это асинхронная отправка форм с одним изображением на каждой, но я не уверен, что это хорошая идея или она просто задержит другие запросы.
class MissionsController < ApplicationController
def add_images
image_ids = params[:images].collect do |image|
Image.with_imgur(
title: "#{@mission.trip.name} - #{current_user.username}",
image: image,
album_id: @mission.album.imgur_id,
user_id: current_user.id,
trip_id: @mission.trip_id
).imgur_id
end
end
end
class Image < ActiveRecord::Base
def self.with_imgur(options)
trip_id = options.delete(:trip_id)
user_id = options.delete(:user_id)
image = Imgur::Image.create(options)
create(
imgur_id: image["id"],
link: image["link"],
trip_id: trip_id,
user_id: user_id
)
end
end
https://github.com/tomprats/toms-missions/blob/master/app/models/imgur.rb#L116
class Imgur::Image < Base
def self.create(options)
url = "https://api.imgur.com/3/image"
params = {
image: options[:image],
album: options[:album_id],
type: options[:type] || "file", # "file" || "base64" || "URL"
title: options[:title],
description: options[:description]
}
api_post(url, params).body["data"]
end
end