jruby-openssl 中已经初始化的常量

Posted

技术标签:

【中文标题】jruby-openssl 中已经初始化的常量【英文标题】:Already initialized constant in jruby-openssl 【发布时间】:2013-01-08 01:00:24 【问题描述】:

在扭矩箱上运行我的 rails 应用程序时,我得到了很多

already initialized constant: ...

来自gems/jruby-openssl-0.8.2/lib/shared/jruby-openssl.rb:16 的警告。这是一个安全问题吗?有什么办法可以消除这些警告?

【问题讨论】:

也有同样的警告 我正在尝试解决这个问题,但甚至找不到代码来查看违规行的内容。我的猜测是这是与 JRuby 本身打包的,需要发给 CodeHaus.org 上的 JRuby 组?还在寻找... 【参考方案1】:

我终于可以通过完全移除宝石来摆脱它。根据这个source,jruby-openssl 现在被直接拉到了 jruby 项目中,不再需要作为 gem。

感谢大家和我一起研究这个问题。

【讨论】:

【参考方案2】:

在 Gemfile 中将以下内容添加到我的行后,我不再收到这些错误。

gem 'jruby-openssl', :require => false

我希望这会有所帮助。

【讨论】:

从对 cme​​ts 的阅读看来,这似乎只需要可用。添加 require => false 似乎是合乎逻辑的,在我在某处读到这确实是 jruby 库打包 openssl 方式的一种解决方法(根据 Jruby 网站上的一些帖子。 这也适用于我。但想知道到底发生了什么:) 您能否添加一个您找到此信息的来源?在应用您的修复之前,我想进一步阅读。 我看到的资源,我再也找不到了,是在我真的只是想找出为什么jruby-ossl库中没有代码的时候的参考,这是因为它已包含在 jruby 核心中。 jruby-core 加载 openssl 的方式(我相信这是问题的真正所在),是什么让你需要把这个 gem 放在你的 Gemfile 中(尝试找到 Gem 的源代码)。因此,如果需要,放置 require => false 可以使代码可用。 也许完全移除 gem 会暴露错误。我还没有尝试过这一步,但是如果你这样做并且有错误,然后搜索它,你可能会找到它。我认为这是一个 JRUBY 解决方法,因为它们与 obenssl 的集成有些模糊,因为这个 gem 中没有源代码(至少目前在 github 上)。以前的版本,当然。

以上是关于jruby-openssl 中已经初始化的常量的主要内容,如果未能解决你的问题,请参考以下文章

为啥长臂猿会抛出“未初始化的常量 Gibbon::API (NameError)”

JAVA常量定义时就要初始化吗?

在初始化列表中初始化一个常量大小的数组

为啥类的常量数据成员需要在构造函数中初始化?

浅析Java中字符串初始化new String()和直接赋值的区别数组初始化时用new与不用new的区别

C++_const 常量成员以及成员初始化列表及其常量类