Переопределение констант Gemfile, предупреждение: константа уже инициализирована

В моем Gemfile у меня есть два драгоценных камня, которые определяют один и тот же набор констант. Два драгоценных камня sentiment_lib и engtagger.

Это означает, что всякий раз, когда я запускаю задачу, я получаю более 10 предупреждений, подобных этому:

...engtagger/porter.rb:6: warning: already initialized constant Stemmable::STEP_2_LIST
...stemmer/porter.rb:10: warning: previous definition of STEP_2_LIST was here

Поскольку в обоих используется один и тот же файл, это не проблема, но предупреждения начинают раздражать.

Что я могу сделать, чтобы исправить это?


person Charlie Egan    schedule 31.01.2015    source источник
comment
Что внутри porter.rb, это класс или модуль? и какой путь к нему? Запустить пакетное шоу   -  person neo    schedule 31.01.2015
comment
То же, что и github.com/yohasebe/engtagger/blob/master/ lib/engtagger/ стеммер один практически идентичен.   -  person Charlie Egan    schedule 31.01.2015


Ответы (1)


Я бы начал с разветвления engtagger Затем удалил файл с константой, который уже был инициирован через другой гем, зафиксировал свои изменения во вновь созданном форке.

Добавьте его в свой Gemfile

gem engtagger, github: 'your_github_handle/engtagger'

Затем запустите bundle update engtagger

Теперь у вас должен быть engtagger в комплекте без этого модуля.

Если бы мы не имели дело с константами, я бы порекомендовал модуль eval, но он, скорее всего, не сработает, так как однажды установленные константы не могут быть изменены, отсюда и предупреждающее сообщение.

person neo    schedule 31.01.2015
comment
Круто - я надеялся, что будет более простой способ. Я собираюсь оставить ответ непринятым на всякий случай, если есть какие-либо другие предложения. Если нет, я приму это позже. Спасибо. - person Charlie Egan; 31.01.2015
comment
Конечно, есть несколько других способов, но иметь дело с константами может быть сложно, я хотел бы знать, есть ли более простой способ. - person neo; 31.01.2015