如何在Ruby on Rails中重新启用某个模块?

更新于
2026-10-09 22:36:04
2阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计370个文字,预计阅读时间需要2分钟。

如何在Ruby on Rails中重新启用某个模块?

在`vendor/plugins`文件夹中的模块文件里,有一个名为`Greetings.py`的文件。该文件定义了一个名为`Greetings`的类,其中包含了一个`greet`方法。以下是简化后的代码内容:

pythonclass Greetings: def greet(self, message): if message==gm: return good morning elif message==ge: return evening elif message==ga: return good afternoon

我有一个位于vendor / plugins文件夹中的模块文件.

module Greetings def self.greet(message) return "good morning" if message=="gm" return "evening" if message=="ge" return "good afternoon" if message=="ga" end end

当我做Greetings.greet(“ge”)时,我将“晚上”作为输出.我想改变这种行为而不改变上面的Greetings模块(显而易见的原因是它是一个外部插件).

我的问题很简单.当我打电话给Greetings.greet(“ge”)时,我应该怎么做才能给我回复“A Very Good Evening”,对于所有其他输入,它应该返回原始模块返回的内容.

我会在config / initializers文件夹中写这个,因为我正在使用Rails.

PS:我已经为课程筹集了similar question.但我真的想知道模块是如何工作的.

这适用于Ruby 1.8.7和Ruby 1.9.2

如何在Ruby on Rails中重新启用某个模块?

module Greetings def self.greet(message) return "good morning" if message=="gm" return "evening" if message=="ge" return "good afternoon" if message=="ga" end end p Greetings.greet("ge") # => "evening" module Greetings class << self alias_method :old_greet, :greet def greet(message) return self.old_greet(message) unless message == "ge" return "A Very Good Evening" end end end p Greetings.greet("ge") # => "A Very Good Evening" p Greetings.greet("gm") # => "good morning"

本文共计370个文字,预计阅读时间需要2分钟。

如何在Ruby on Rails中重新启用某个模块?

在`vendor/plugins`文件夹中的模块文件里,有一个名为`Greetings.py`的文件。该文件定义了一个名为`Greetings`的类,其中包含了一个`greet`方法。以下是简化后的代码内容:

pythonclass Greetings: def greet(self, message): if message==gm: return good morning elif message==ge: return evening elif message==ga: return good afternoon

我有一个位于vendor / plugins文件夹中的模块文件.

module Greetings def self.greet(message) return "good morning" if message=="gm" return "evening" if message=="ge" return "good afternoon" if message=="ga" end end

当我做Greetings.greet(“ge”)时,我将“晚上”作为输出.我想改变这种行为而不改变上面的Greetings模块(显而易见的原因是它是一个外部插件).

我的问题很简单.当我打电话给Greetings.greet(“ge”)时,我应该怎么做才能给我回复“A Very Good Evening”,对于所有其他输入,它应该返回原始模块返回的内容.

我会在config / initializers文件夹中写这个,因为我正在使用Rails.

PS:我已经为课程筹集了similar question.但我真的想知道模块是如何工作的.

这适用于Ruby 1.8.7和Ruby 1.9.2

如何在Ruby on Rails中重新启用某个模块?

module Greetings def self.greet(message) return "good morning" if message=="gm" return "evening" if message=="ge" return "good afternoon" if message=="ga" end end p Greetings.greet("ge") # => "evening" module Greetings class << self alias_method :old_greet, :greet def greet(message) return self.old_greet(message) unless message == "ge" return "A Very Good Evening" end end end p Greetings.greet("ge") # => "A Very Good Evening" p Greetings.greet("gm") # => "good morning"