ruby-on-rails - 我如何覆盖这个 Ruby 变量?

标签 ruby-on-rails ruby

原始代码如下所示:

module Acme
  class Address
    STREET_NAME = "123 acme inc drive".freeze

    ..
    ..
  end
end

这是第 3 方的 gem,我希望我可以以某种方式修改初始化程序中的 STREET_NAME 变量,而不必编辑源代码。这可能吗?

最佳答案

只需重新分配它:

Acme::Address::STREET_NAME = "1 Infinite Loop"

卡住对象只会卡住:对象,而不是变量(引用)本身。重新分配一个常量会给你一个警告:

warning: already initialized constant STREET_NAME

因为重新分配常量通常不是一个好主意——但这是 Ruby,并且由于一切都是动态的,所以常量并不是真正的常量。在初始化程序中执行此操作应该可以正常工作。

关于ruby-on-rails - 我如何覆盖这个 Ruby 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270056/

相关文章:

ruby-on-rails - 查找在丰富的连接表 rails 中没有关联记录的所有记录

ruby-on-rails - User模型是否需要:password and :password_confirmation to be set as attr_accesible in authlogic?

ruby-on-rails - 如何使用 Rails 通过 HTTP 强制安全 cookie

Ruby:字符串比较问题

Ruby 类设置/获取

ruby-on-rails - 如何在 ActiveStorage 中使用变体选项后保存图像副本。

ruby-on-rails - 如何使用 paperclip-Rails 加载和验证视频

ruby - 我对 ruby​​/gem 管理和 postgres libpq 有疑问

ruby - RVM 设置 ruby​​ 默认值,当打开新终端时删除 RVM 设置,返回系统 ruby

ruby - 我可以在 Ruby 的 if/else 中使用花括号吗?