Как изменить время ожидания url_expires_in Active Storage Service?

Когда Active Storage создает подписанный вариант URL, он устанавливает время ожидания по умолчанию 5.minutes. Я действительно хочу увеличить это, но я тратил на Github проблемы, нырял в код и нигде не мог найти. В строке 44 класса услуг установлен class_attribute, но как его можно перезаписать?

https://github.com/rails/rails/blob/5-2-stable/activestorage/lib/active_storage/service.rb#L44

Я использую url_for для создания подписанных вариантных ссылок, и, похоже, в этом случае нет возможности изменить настройку. Любая помощь будет принята с благодарностью.

Спасибо! :)


person Paul Danelli    schedule 29.09.2018    source источник
comment
что ты думаешь о наследовании? из класса service.rb и переопределить значение url_expires_in?   -  person Nezir    schedule 29.09.2018


Ответы (1)


Установите ActiveStorage::Service.url_expires_in напрямую, например в инициализаторе:

# config/initializers/active_storage.rb
ActiveStorage::Service.url_expires_in = 1.hour

Rails 6 добавит config.active_storage.service_urls_expire_in:

# config/initializers/active_storage.rb
Rails.application.config.active_storage.service_urls_expire_in = 1.hour
person George Claghorn    schedule 29.09.2018
comment
Сэр, есть ли предел для этой конфигурации? Скажите, вы можете настроить 5.months продолжительность? - person Ricardo Green; 01.04.2019
comment
@RicardoGreen Согласно github.com/rails/rails/issues/31581 существует ограничение в 1 неделю, если вы используете S3. - person Henrik N; 04.05.2019
comment
@George Claghorn Как создать файл active_storage.rb? У меня нет файла active_storage.rb в моем проекте дыры. - person AGM; 28.05.2020
comment
Вы просто создаете файл в папке своего проекта. Используйте путь, указанный в комментариях config / initializers / active_storage.rb. В качестве альтернативы вы также можете добавить это в свои файлы среды development.rb или production rb. - person Marcus Salinas; 01.08.2020
comment
Как создать бессрочную ссылку на файл? - person Corey; 30.11.2020
comment
@Corey Теперь вы можете устанавливать постоянные ссылки, создав публичную корзину. edgeguides.rubyonrails.org/ - person Matt Lemieux; 30.03.2021