Rails 5 - получение версии изображения в формате MiniMagick (CarrierWave / Google Cloud Storage) - PullRequest
0 голосов
/ 07 июня 2018

В настоящее время я использую Google Cloud Storage и CarrierWave для обработки загрузки своих файлов.

Просто чтобы иметь возможность четко объяснить «проблему», давайте предположим, что у меня есть модель с именем User, которая имеетстолбец avatar, который содержит строку изображения.

После того, как пользователь загрузит свой файл, это делается:

version :foo1 do
  process :auto_orient
  process resize_to_fill: [150, 150]
end

version :foo2 do
  process :auto_orient
  process resize_to_fill: [250, 250]
end

version :foo3 do
  process :auto_orient
  process resize_to_fill: [350, 350]
end

, которая успешно создает различные версии изображения в моем ведре.

Так что проблема при просмотре моих журналов, я понял, что когда я делаю

<%= image_tag(User.avatar.foo1.url) %>

Запрос фактически выполняется для каждого варианта изображения, поэтому он вызывает оригиналодин, вместе с foo1-3, перед рендерингом foo1.

Итак, вопрос в том, как мне получить только конкретный вариант, который нужен?(Я не уверен, важен ли здесь мой код загрузчика или кода оператора. Если это так, дайте мне знать, и я включу его)

Для справки, это то, что я вижу в своих журналах при выполненииUser.avatar.foo1.url, что заставляет меня думать, что я делаю "чрезмерный" вызов в Google Cloud Storage.(Я заменил некоторые детали, которые, как мне показалось, могут быть чувствительны к foo)

Sending HTTP get https://www.googleapis.com/storage/v1/b/foo?
200
#<Hurley::Response GET https://www.googleapis.com/storage/v1/b/foo == 200 (374 bytes) 69ms>
Success - #<Google::Apis::StorageV1::Bucket:foo
 @etag="CAI=",
 @id="foo",
 @kind="storage#bucket",
 @location="ASIA-SOUTHEAST1",
 @metageneration="2",
 @name="foo",
 @project_number="foo",
 @self_link="https://www.googleapis.com/storage/v1/b/foo",
 @storage_class="NEARLINE",
 @time_created=Wed, 20 Dec 2017 05:50:41 +0000,
 @updated=Wed, 20 Dec 2017 07:08:46 +0000>

Sending HTTP get https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2FWeChat_Image_20180112102430.jpg?
200
#<Hurley::Response GET https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2FWeChat_Image_20180112102430.jpg == 200 (926 bytes) 62ms>
Success - #<Google::Apis::StorageV1::Object:0x007f98b3332220
 @bucket="foo",
 @content_type="image/jpeg",
 @crc32c="5SNA/w==",
 @etag="CNrr8om4h9sCEAE=",
 @generation="1526377710663130",
 @id=
  "foo/uploads/profile/avatar/328/WeChat_Image_20180112102430.jpg/1526377710663130",
 @kind="storage#object",
 @md5_hash="g6cUQBBiGC31uRJUtM1dng==",
 @media_link=
  "https://www.googleapis.com/download/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2FWeChat_Image_20180112102430.jpg?generation=1526377710663130&alt=media",
 @metageneration="1",
 @name="uploads/profile/avatar/328/WeChat_Image_20180112102430.jpg",
 @self_link=
  "https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2FWeChat_Image_20180112102430.jpg",
 @size="5499",
 @storage_class="NEARLINE",
 @time_created=Tue, 15 May 2018 09:48:30 +0000,
 @time_storage_class_updated=Tue, 15 May 2018 09:48:30 +0000,
 @updated=Tue, 15 May 2018 09:48:30 +0000>

Sending HTTP get https://www.googleapis.com/storage/v1/b/foo?
200
#<Hurley::Response GET https://www.googleapis.com/storage/v1/b/foo == 200 (374 bytes) 53ms>
Success - #<Google::Apis::StorageV1::Bucket:foo
 @etag="CAI=",
 @id="foo",
 @kind="storage#bucket",
 @location="ASIA-SOUTHEAST1",
 @metageneration="2",
 @name="foo",
 @project_number="foo",
 @self_link="https://www.googleapis.com/storage/v1/b/foo",
 @storage_class="NEARLINE",
 @time_created=Wed, 20 Dec 2017 05:50:41 +0000,
 @updated=Wed, 20 Dec 2017 07:08:46 +0000>

Sending HTTP get https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2Fthumb_WeChat_Image_20180112102430.jpg?
200
#<Hurley::Response GET https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2Fthumb_WeChat_Image_20180112102430.jpg == 200 (950 bytes) 58ms>
Success - #<Google::Apis::StorageV1::Object:foo
 @bucket="foo",
 @content_type="image/jpeg",
 @crc32c="XDUTLQ==",
 @etag="CN/7+oq4h9sCEAE=",
 @generation="1526377712893407",
 @id=
  "foo/uploads/profile/avatar/328/thumb_WeChat_Image_20180112102430.jpg/1526377712893407",
 @kind="storage#object",
 @md5_hash="CRdX68ncBsEqJFY/uRg03A==",
 @media_link=
  "https://www.googleapis.com/download/storage/v1/b/deanslist-9322/o/uploads%2Fprofile%2Favatar%2F328%2Fthumb_WeChat_Image_20180112102430.jpg?generation=1526377712893407&alt=media",
 @metageneration="1",
 @name="uploads/profile/avatar/328/thumb_WeChat_Image_20180112102430.jpg",
 @self_link=
  "https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2Fthumb_WeChat_Image_20180112102430.jpg",
 @size="5923",
 @storage_class="NEARLINE",
 @time_created=Tue, 15 May 2018 09:48:32 +0000,
 @time_storage_class_updated=Tue, 15 May 2018 09:48:32 +0000,
 @updated=Tue, 15 May 2018 09:48:32 +0000>

Sending HTTP get https://www.googleapis.com/storage/v1/b/foo?
200
#<Hurley::Response GET https://www.googleapis.com/storage/v1/b/foo == 200 (374 bytes) 59ms>
Success - #<Google::Apis::StorageV1::Bucket:0x007f98b3252328
 @etag="CAI=",
 @id="foo",
 @kind="storage#bucket",
 @location="ASIA-SOUTHEAST1",
 @metageneration="2",
 @name="foo",
 @project_number="1028403006209",
 @self_link="https://www.googleapis.com/storage/v1/b/foo",
 @storage_class="NEARLINE",
 @time_created=Wed, 20 Dec 2017 05:50:41 +0000,
 @updated=Wed, 20 Dec 2017 07:08:46 +0000>

Sending HTTP get https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2Ftestimonial_WeChat_Image_20180112102430.jpg?
200
#<Hurley::Response GET https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2Ftestimonial_WeChat_Image_20180112102430.jpg == 200 (974 bytes) 59ms>
Success - #<Google::Apis::StorageV1::Object:0x007f98b6a82a40
 @bucket="foo",
 @content_type="image/jpeg",
 @crc32c="VFIp7Q==",
 @etag="CJbO2Yu4h9sCEAE=",
 @generation="1526377714444054",
 @id=
  "foo/uploads/profile/avatar/328/testimonial_WeChat_Image_20180112102430.jpg/1526377714444054",
 @kind="storage#object",
 @md5_hash="QGE8XArsE5C9QD2A6ybpVg==",
 @media_link=
  "https://www.googleapis.com/download/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2Ftestimonial_WeChat_Image_20180112102430.jpg?generation=1526377714444054&alt=media",
 @metageneration="1",
 @name=
  "uploads/profile/avatar/328/testimonial_WeChat_Image_20180112102430.jpg",
 @self_link=
  "https://www.googleapis.com/storage/v1/b/foo/o/uploads%2Fprofile%2Favatar%2F328%2Ftestimonial_WeChat_Image_20180112102430.jpg",
 @size="2481",
 @storage_class="NEARLINE",
 @time_created=Tue, 15 May 2018 09:48:34 +0000,
 @time_storage_class_updated=Tue, 15 May 2018 09:48:34 +0000,
 @updated=Tue, 15 May 2018 09:48:34 +0000>
...