我想为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...
。
我猜想没有我的猴子补丁就会重新加载。为了让我的猴子补丁也重新加载,我错过了什么?
这不是最佳解决方案,但是当我将代码放在environment.rb或lib / .rb或config / initializers / .rb中时,我就有了错误。
如果我把它放在一个模型文件,那么它的工作原理。
应用程序/模型/ random_model.rb
ActiveStorage::Blob.include ActiveStorageBlobCachedUrl
ActiveStorage::Variant.include ActiveStorageVariantCachedUrl
class RandomModel < ApplicationRecord
xxx
end
把它放在initializers/
的文件中
module ActiveStorageBlobCachedUrl
def direct_url
# xx
end
end
ActiveSupport::Reloader.to_prepare do
ActiveStorage::Blob.include ActiveStorageBlobCachedUrl
end