Как добавить метод в ActiveStorage :: Variant? - PullRequest
0 голосов
/ 24 июня 2019

Я хочу добавить метод к ActiveStorage::Variant Как это сделать?

У меня есть это для ActiveStorage :: Blob, и оно работает, когда я изменяю код без перезагрузки сервера:

config/initializers/active_storage_direct_url.rb:

module ActiveStorageDirectUrl
  def cloudfront_url(expires_at = nil)
    # xx
  end
end

ActiveSupport.on_load(:active_storage_blob) do
  ActiveStorage::Blob.include ActiveStorageBlobCachedUrl
end

Но проблема в том, когда я делаю это для ActiveStorage :: Variant. Я попробовал это:

ActiveSupport.on_load(:active_storage_blob) do
  ActiveStorage::Variant.include ActiveStorageVariantCachedUrl
end
ActiveSupport.on_load(:active_storage_variant) do
  ActiveStorage::Variant.include ActiveStorageVariantCachedUrl
end

Но в обоих случаях, в среде разработчиков, когда я изменяю некоторый код и не перезагружаю сервер, он говорит: undefined method 'direct_url' for #<ActiveStorage::Variant:0x00007fc04fa45530>

Когда я перезагружаю rails server, это работает, хотя. То же самое для sidekiq, мне нужно перезагрузить его.

1 Ответ

0 голосов
/ 24 июня 2019

Использование:

ActiveSupport::Reloader.to_prepare do
  ActiveStorage::Variant.include ActiveStorageVariantCachedUrl
end
...