猴子在 ruby 的模块中修补一个块
monkey patch a block in a module in ruby
module Cequel
module Record
module Schema
extend ActiveSupport::Concern
extend Util::Forwardable
included do
class_attribute :table_name, instance_writer: false
self.table_name = name.demodulize.tableize.to_sym unless name.nil? || self.table_name.present?
end
end
end
end
我想在我的 rails 应用程序中从这个模块中修改 included
块,但是当我在 rails 的初始化程序中定义相同的代码时,我得到
included': Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)
This 是我想用补丁修复的,直到这个 PR 被合并,有没有办法修补包含的块?
您需要在初始化程序中从头开始。也就是说,您应该使用
完全删除模块常量定义
Cequel::Record.send :remove_const, :Schema
现在您可以重新执行代码段,根据需要定义 Schema
:Ruby 不再了解它。
module Cequel
module Record
module Schema
extend ActiveSupport::Concern
extend Util::Forwardable
included do
class_attribute :table_name, instance_writer: false
self.table_name = name.demodulize.tableize.to_sym unless name.nil? || self.table_name.present?
end
end
end
end
我想在我的 rails 应用程序中从这个模块中修改 included
块,但是当我在 rails 的初始化程序中定义相同的代码时,我得到
included': Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)
This 是我想用补丁修复的,直到这个 PR 被合并,有没有办法修补包含的块?
您需要在初始化程序中从头开始。也就是说,您应该使用
完全删除模块常量定义Cequel::Record.send :remove_const, :Schema
现在您可以重新执行代码段,根据需要定义 Schema
:Ruby 不再了解它。