加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails中弃用整个模型

发布时间:2020-12-17 03:22:27 所属栏目:百科 来源:网络整理
导读:我正在从Rails 2.x到3.x重写/重构客户端的遗留应用程序.作为重构的一部分,我还想从我们的本地语言中的模型/方法转向纯粹的英语代码库. 这涉及为几乎每个功能编写新方法.我通过这样做解决方法: def english_method # ...enddef native_method warn 'DEPRECAT
我正在从Rails 2.x到3.x重写/重构客户端的遗留应用程序.作为重构的一部分,我还想从我们的本地语言中的模型/方法转向纯粹的英语代码库.

这涉及为几乎每个功能编写新方法.我通过这样做解决方法:

def english_method
  # ...
end

def native_method
  warn 'DEPRECATED,please use #english_method'
  english_method
end

这适用于方法,并帮助我跟踪旧方法仍在使用的地方,而不会破坏任何代码.

然而,对于类(模型),我一直在做:

class NativeClass < EnglishClass
  # DEPRECATED,Please use EnglishClass
end

class EnglishClass
  # ...
end

这“工作”,每当调用NativeClass时,应用程序都会继续工作,但是我没有在日志中收到任何消息,通知我仍然调用NativeClass的应用程序的一部分.

如何确保NativeClass的每次“触摸”实际上都会导致写入日志错误?

我试过(除了认为“可能这样有效”之外),这样做:

class NativeClass < EnglishClass
  -> { ActiveSupport::Deprecation.warn 'Native model is deprecated in favor of English' }
end

但那(显然?)没有用.我认为每次调用NativeClass时lambda都会被延迟加载,但是我对lambdas的理解仍然有些浅薄,所以我可能会在这里弄错.

有关如何弃用整个类并在触摸时向我的日志发送警告消息的任何线索?

其他“最佳实践”和/或弃用解决方案是受欢迎的,但我不确定它是否是SO的有效问题(我不想冒这个问题关闭这个问题的风险).

解决方法

尝试使用像:

class NativeClass < EnglishClass
  def initialize
    ActiveSupport::Deprecation.warn "NativeClass is deprecated and may be removed from future releases,use EnglishClass instead.",caller
    super
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读