4

プロジェクトでTwitter-text gem を使用していますが、エラーが発生します。その宝石の 1 つの定数をオーバーライドする必要があります。

メソッドのオーバーライドに関する StackOverflow に関する質問が役に立ちましたが、まだ問題があります。twitter-text.rbinというファイルを作成し/config/initializers/、次のコードを記述しました。

module Twitter
  class Regex
    HASHTAG_CHARACTERS = "/[[^ ]_#{LATIN_ACCENTS}]/io"
  end
end

(この正規表現を使用すると、空白以外の任意の文字を使用してハッシュタグを作成できます)。

メソッドもオーバーライドしようとしていますが、それも機能しないようです。私のコード(同じファイル上)に従ってください:

module Twitter
  module Autolink
    def auto_link_hashtags(text, options = {})  # :yields: hashtag_text
      text = text.downcase
      options = options.dup
      (...)
    end
  end
end

このメソッドに次の行を追加しました: text = text.downcase. さて、このメソッドと属性/定数をオーバーライドするにはどうすればよいでしょうか?

4

1 に答える 1

9

最初に定数を削除してから、再定義してみてください。

module Twitter
  class Regex
    remove_const(:HASHTAG_CHARACTERS) if (defined?(HASHTAG_CHARACTERS))

    HASHTAG_CHARACTERS = "/[[^ ]_#{LATIN_ACCENTS}]/io"
  end
end

ただし、これは非常に醜いモンキーパッチの領域です。

于 2013-04-17T18:50:41.287 に答える