【发布时间】:2019-08-06 10:14:07
【问题描述】:
我想向ActiveStorage::Blob 添加一个方法。我有这个:
config/initializers/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...。
我猜有些东西是在没有我的猴子补丁的情况下重新加载的。为了让我的猴子补丁也重新加载,我缺少什么?
【问题讨论】:
-
你不会错过任何东西。 Rails 检测到它应该重新加载
ActiveStorage::Blob并重新加载它。它不知道是否应该重新加载其他内容。 -
谢谢,我添加这个是为了更准确地回答我的问题:“为了让我的 Monkey Patch 也重新加载,我缺少什么?”
-
您应该在重新加载后手动应用它。定义一个控制台命令来执行
reload! && ActiveStorage::Blob.include(ActiveStorageBlobCachedUrl)并调用它而不是reload!。 -
我什至都不叫reload!我有我的 rails s,它正在工作,当我更新 user.rb 时,没有重新启动我的 rails s,然后当我重新加载页面时它会失败。我不知道我应该把
ActiveStorage::Blob.include ActiveStorageBlobCachedUrl放在哪里才能让它与这个自动重新加载的东西一起工作。我想我不应该把它放在 environment.rb 中。 -
AFAIK,没有办法教 Rails 在重新加载它认为重新加载的内容时重新加载一些其他内容。
标签: ruby-on-rails monkeypatching