Как обезьяна заплатить в Ruby on Rails - PullRequest
1 голос
/ 15 марта 2019

Я хочу добавить метод к ActiveStorage::Blob. У меня есть это:

конфиг / Инициализаторы / active_storage_cached_urls.rb

module ActiveStorageBlobCachedUrl
  def direct_url
    xxx || self.service_url
  end
end

конец config / environment.rb

ActiveStorage::Blob.include ActiveStorageBlobCachedUrl

Я запустил rails s в разработке, и он работает. Затем я обновил один файл ruby, например модель, и получил ошибку: undefined method 'direct_url....

Полагаю, что-то перезагружается без моего патча обезьяны. Чего мне не хватает для того, чтобы мой патч обезьяны также был перезагружен?

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Это не оптимальное решение, но когда я помещаю код в environment.rb или в lib / .rb или в config / initializers / .rb , тогда у меня ошибка.

Если я поставлю один файл модели, он будет работать.

приложение / модели / random_model.rb

ActiveStorage::Blob.include ActiveStorageBlobCachedUrl
ActiveStorage::Variant.include ActiveStorageVariantCachedUrl

class RandomModel < ApplicationRecord
  xxx
end
0 голосов
/ 24 июня 2019

поместите это в файл в initializers/

module ActiveStorageBlobCachedUrl
  def direct_url
    # xx
  end
end


ActiveSupport::Reloader.to_prepare do
  ActiveStorage::Blob.include ActiveStorageBlobCachedUrl
end
...