2013-04-17 2 views
3

Я работаю с Twitter-text gem на моем проекте, но получаю ошибки. Мне нужно переопределить одну константу этого драгоценного камня.Как переопределить константу драгоценного камня? (Ruby on Rails)

Я вижу некоторые вопросы о StackOverflow о переопределении метода, которые мне помогли, но у меня все еще возникают проблемы. Я создал файл с именем twitter-text.rb в /config/initializers/ и написал следующий код:

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

(это Regex позволяет мне писать Hashtags с любыми символами, кроме пустых пространств).

Я тоже пытаюсь переопределить метод, но, похоже, он тоже не работает. После моего кода (в том же файле):

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. Что я могу сделать, чтобы переопределить этот метод и атрибут/константа?

ответ

7

Вы можете попробовать удалить константу, а затем переосмысление его:

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

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

Это супер-некрасиво monkeypatch территория, хотя.

+0

Здравствуйте, @tadman, спасибо за ваш ответ! Ну, я использовал то, что вы сказали, но все равно. Я изменил регулярное выражение для: HASHTAG_CHARACTERS = "/ [[^] _ # {LATIN_ACCENTS}]/io", чтобы увидеть, изменилось ли какое-либо изменение, но такое же, как и раньше. И знаете ли вы, что я могу сделать для методов? – Paladini

+0

Вы уверены, что ваше исправление было применено? Вы должны проверить, для чего установлен 'Twitter :: Regex :: HASHTAG_CHARACTERS'. – tadman

+0

Как я могу это сделать? – Paladini

Смежные вопросы