【问题标题】:How to avoid deprecation messages from RubyGems?如何避免来自 RubyGems 的弃用消息?
【发布时间】:2011-05-06 09:00:53
【问题描述】:

gem update --system 之后,当我做一些与 ruby​​gems 相关的事情时,我会收到这样的消息:

注意:Gem::Specification#default_executable= 已被弃用,没有替代品。它将在 2011 年 10 月 1 日或之后删除。

Gem::Specification#default_executable= 从 /usr/lib/ruby/gems/1.8/specifications/rubygems-update-1.7.2.gemspec:11 调用。

我该如何避免呢?我尝试删除 ruby​​gems 并重新安装,但没有解决问题。

【问题讨论】:

  • 很后悔更新了,太浪费时间了。

标签: ruby rubygems gem


【解决方案1】:

您可能需要重新生成 gem 规范。

安装 RubyGems 1.8.1 后,您将在加载现有 gem 时看到弃用。运行 gem pristine --all --no-extensions 以安全地重新生成您的 gem 规范。

http://blog.segment7.net/2011/05/05/rubygems-1-8-1

【讨论】:

  • 必须卸载带有本机代码的 Gem,然后重新安装。
  • 当我运行这个时,我得到: 将 gems 恢复到原始状态... 恢复 minitest-1.6.0 恢复 minitest-1.6.0 恢复 rake-0.8.7 恢复 rake-0.8.7 RDoc 2.5没有保存方法参数,所以您应该将您的 rdoc-data gem 升级到 >= 2.5.3 的版本。然后它退出了。可能会在评论中看起来很愚蠢。不知道该怎么办。
  • 我的 gem 由 Bundler 提供,因此运行 gem pristine --all --no-extensions 只会恢复 bundler gem,因为它是唯一作为系统 gem 安装的。其余的位于我的 vendor/ruby 目录中。任何人都知道如何使它们“原始”,或者如果有一个论点我可以传递给 bundler 为我做这件事?我真的很想摆脱大量的弃用通知。我正在使用 Bundler 1.0.15 和 RubyGems 1.8.5。
  • 如果gem pristine 不适合你,试试gem update --system 1.6.2
【解决方案2】:

看看你的 ruby​​gem 安装在哪里:

$ gem list -d rubygems

在那里找到deprecate.rb 文件,并使self.skip 类方法始终返回true。

或者如果您使用的是 RVM,以下命令将修复它:

rvm rubygems current

【讨论】:

  • RVM 修复只是降低了 RubyGems 的版本。
  • 在大多数情况下都可以。谢谢格拉迪斯!
  • 对我来说,我在同一个区域有几个 deprecate.rb 文件,我必须对所有这些文件都做这种技术吗?仅对其中一个文件执行此操作并不能解决我在回滚到 1.7.2 后仍然收到一条消息的问题。
  • 看来我和许多人一样,在使用“rvm ruby​​gems current”时遇到了问题 - 错误:无法为此解释器切换到 1.3.7。似乎在某些时候 rvm 搞砸了(可能是因为不使用 rvm 来更新 ruby​​gems)。发现这很容易通过重新安装 rvm 来解决(无需卸载): $ bash rvm.beginrescueend.com/install/rvm)
【解决方案3】:

重新生成 gem 规范对我有用: sudo gem pristine --all --no-extensions

见: https://github.com/rubygems/rubygems/blob/master/History.txt

您还可以降级您的 ruby​​gems 版本: sudo gem update --system 1.7.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 2019-08-16
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多