Gemfile 常量重新定义,"warning: already initialized constant"

Gemfile constants redefinition, "warning: already initialized constant"

在我的 Gemfile 中,我有两个 gem,它们都定义了同一组常量。这两个宝石是 sentiment_libengtagger

这意味着每当我 运行 一个任务时,我都会收到超过 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

因为同一个文件只在两者中使用,所以这不是问题 - 但警告开始变得烦人。

我该怎么做才能解决这个问题?

我将从分叉开始 engtagger 然后删除具有已通过另一个 gem 启动的常量的文件,将您的更改提交到新创建的分支。

将其添加到您的 Gemfile

gem engtagger, github: 'your_github_handle/engtagger'

然后运行bundle update engtagger

现在您应该在没有该模块的情况下将 engtagger 添加到您的包中。

如果我们不处理常量,我会推荐一个模块 eval,但它很可能不起作用,因为常量一旦设置就无法更改,因此会出现警告消息。