【问题标题】:Gemfile constants redefinition, "warning: already initialized constant"Gemfile 常量重新定义,“警告:已初始化常量”
【发布时间】:2015-01-31 14:13:46
【问题描述】:

在我的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

由于只是在两者中使用了相同的文件,这不是问题 - 但警告开始变得烦人。

我能做些什么来解决这个问题?

【问题讨论】:

标签: ruby gem constants gemfile


【解决方案1】:

我会先分叉engtagger 然后删除已通过其他 gem 启动的具有常量的文件,将您的更改提交到新创建的 fork。

将其添加到您的 Gemfile 中

gem engtagger, github: 'your_github_handle/engtagger'

然后运行bundle update engtagger

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

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

【讨论】:

  • 酷 - 我希望有一个更简单的方法。我将不接受答案,以防万一还有其他建议。如果没有,我稍后会接受。谢谢。
  • 当然,还有其他一些方法,但处理常量可能很困难,我很想知道是否还有更简单的方法
猜你喜欢
  • 2013-09-24
  • 1970-01-01
  • 2021-07-04
  • 2011-01-02
  • 2011-08-29
  • 2011-11-29
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多