В настоящее время я использую 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>