Pal*_*ini 3 ruby overriding rubygems ruby-on-rails ruby-on-rails-3
我 在我的项目中使用Twitter-text gem,但是我遇到了一些错误.我需要覆盖那个gem的一个常量.
我在StackOverflow上看到一些关于方法覆盖的问题对我有帮助,但我仍然遇到麻烦.我创建了一个名为twitter-text.rbin 的文件/config/initializers/并编写了以下代码:
module Twitter
class Regex
HASHTAG_CHARACTERS = "/[[^ ]_#{LATIN_ACCENTS}]/io"
end
end
Run Code Online (Sandbox Code Playgroud)
(这个正则表达式允许我用除空格之外的任何字符编写Hashtags).
我也试图覆盖一个方法,但它似乎也不起作用.关注我的代码(在同一个文件中):
module Twitter
module Autolink
def auto_link_hashtags(text, options = {}) # :yields: hashtag_text
text = text.downcase
options = options.dup
(...)
end
end
end
Run Code Online (Sandbox Code Playgroud)
我刚刚在这个方法中添加了以下行:text = text.downcase.那么,我该怎么做才能覆盖这个方法和属性/常量?
您可以先尝试删除常量,然后重新定义它:
module Twitter
class Regex
remove_const(:HASHTAG_CHARACTERS) if (defined?(HASHTAG_CHARACTERS))
HASHTAG_CHARACTERS = "/[[^ ]_#{LATIN_ACCENTS}]/io"
end
end
Run Code Online (Sandbox Code Playgroud)
不过,这是一个超级丑陋的monkeypatch领域.
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |