ruby-on-rails - 如何删除默认 gem? !想卸载一个 gem 1.7.7 版本的 json

标签 ruby-on-rails rubygems default

我在 OSX 和 Ubuntu 中有相同的 rails 应用程序,我想使用 Zeus 来加速我的 rspec。
在 Ubuntu 中,Zeus 启动正常,但在 OSX 中它总是崩溃。
终于找到问题了,https://github.com/burke/zeus/issues/237#issuecomment-18700462 OSX 和 Ubuntu 之间的区别在于 json gem 的版本。
我用 gem list | grep jsonUbuntu 显示

json (1.8.1, 1.8.0, 1.5.3)
json_pure (1.5.3)
json_spec (1.1.1)
jsonpath (0.5.3)
multi_json (1.8.2, 1.7.8, 1.0.3)

麦克秀
json (1.8.1, 1.7.7)
json_spec (1.1.1)
jsonpath (0.5.5, 0.5.3)
multi_json (1.8.2, 1.7.8)

所以我想卸载 1.7.7 版本的 json gem 来让 zeus 启动,但是
gem uninstall json -v 1.7.7
ERROR:  While executing gem ... (Gem::InstallError)
gem "json" cannot be uninstalled because it is a default gem

我该怎么办?

最佳答案

因此,根据我所知道的,没有简单的命令可以将 gemspec 文件从默认文件夹移动到非默认文件夹。据我所知,这是一件好事,但这里是有关如何手动执行此操作的说明。

  • 找到默认规范的位置。最简单的方法是进入irb并运行以下命令:
    irb(main):002:0> Gem.default_specifications_dir
    => "/Users/user/.rubies/ruby-2.5.7/lib/ruby/gems/2.5.0/specifications/default"
    

    对于较旧的 ruby​​gems,它是:
    irb(main):001:0> File.join Gem::Specification.default_specifications_dir
    => "/Users/newdark/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/specifications/default"
    

  • 这是构建 gemspec 路径的代码行
    https://github.com/rubygems/rubygems/blob/v2.6.13/lib/rubygems/installer.rb#L420
  • 获得文件路径后,您只需将 gem 名称和版本从默认文件夹移动到父文件夹。
    $ cd /Users/newdark/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/specifications/default
    $ mv json-1.7.7.gemspec ../
    

  • 如果你这样做 gem list -d您不应再看到 Installed at (default) 字样在 gem 版本 json-1.7.7 旁边。然后你可以运行 gem uninstall json -v 1.7.7没有它与你战斗。如果你想撤销这一切,只需运行 gem install json -v 1.7.7 --default

    关于ruby-on-rails - 如何删除默认 gem? !想卸载一个 gem 1.7.7 版本的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20945110/

    相关文章:

    ruby-on-rails - 循环遍历 Ruby on Rails 中的对象属性

    ruby-on-rails - 是否可以登录到 Ruby on Rails 3 中的两个不同位置?

    ruby 。无法添加来源

    rubygems - JRuby OpenSSL 错误

    java - 在 switch 语句中测试(junit)默认情况?

    ruby-on-rails - Ruby on Rails : Nested named scopes

    ruby-on-rails - Ruby on Rails - 无法将 "\x89"从 ASCII-8BIT 转换为 xxx/xxxx/xxxx 的 UTF-8

    ruby - ruby 会发生冲突吗?

    如果不在配置文件中,Python ConfigParser 使用默认值

    PHP/MySQL - 将默认文本存储在数据库或文件中?