ruby 中是否可以取消定义变量?

2024-02-19

在 ruby​​ 中,有没有办法在定义变量或常量后“取消定义”变量或常量?

在我们的 Rails 环境中,我们将三个内容之一定义为true,取决于环境:TESTING, DEVELOPMENT, or PRODUCTION。然后,在控制器代码中,我们使用defined?看看我们处于什么环境,即:defined? PRODUCTION.

现在,我想对一些特定于环境的行为进行单元测试。我最初的尝试是在测试中设置适当的常量,然后在拆卸中重置它们。但是我不知道如何重置DEVELOPMENT and PRODUCTION这样defined?返回假。

显然,解决方案是除了检查适当的常量是否已定义之外,还检查该常量是否也为真,但这将导致必须触及相当数量的现有代码。

编辑:我意识到这绝对不是正确的做事方式。唉,改变它是一项不平凡的任务,所以我正在寻找一种简单的方法来对现在的内容进行单元测试。另外,我也只是对较低级语言的问题感到好奇,即是否可以取消定义变量/常量。


I found 这个答案 http://www.ruby-forum.com/topic/2530

Object.send(:remove_const, "TESTING")

如果我没记错的话,使用send这是一种 hack,因为remove_const 实际上是一个私有方法。你想问自己为什么需要同时定义常量 PRODUCTION、DEVELOPMENT 和 TESTING,而它们实际上是互斥的;这就是为什么我赞成 grepsedawk 的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ruby 中是否可以取消定义变量? 的相关文章

随机推荐