如何从命令行调用一个旧版本的 gem?

28

假设我安装了两个版本的gem(somegem的版本为0.10.6和0.10.5),我想从命令行运行早期版本。我是否需要卸载较新的版本?是否有一种方法可以使用标志指定要使用哪个版本?类似于...

somegem /path/to/dir --version 0.10.5
我查阅了rubygems的文档,它只描述了如何在从文件中require gem时使用特定版本,但没有提到如何在命令行中执行此操作。

我查阅了rubygems的文档,它只描述了如何在从文件中require gem时使用特定版本,但没有提到如何在命令行中执行此操作。


为什么要从命令行中"加载一个 gem"?除非你在 Ruby 代码中使用这个 gem(然后,你需要按照文件中的指示来引用它...),否则没有任何意义。 - Gareth
我不是在尝试加载,而只是运行一个 gem 的二进制文件。当然它们不是同一件事。有时我需要运行旧版本,或者我想运行我修改过的 gem,但也需要在必要时运行原始的 gem。由于它们都被命名为“somegem”,Ruby 无法区分并使用最新版本的二进制文件。 - picardo
1个回答

53
somegem _0.10.5_ /path/to/dir

没有文档链接,因为显然没有任何文档可用。


你认为这是因为 Rubygems 的开发人员文档不严谨,还是这个功能有些不受支持,或者两者兼而有之? - Andrew Grimm
3
对我而言,这段话的意思是:在运行somegem时,默认情况下会使用ruby1.9.1。但是,通过运行ruby -S somegem _1.4.3_命令,可以使用rubygems 1.8.15成功地完成操作。 - Andrew Grimm
显然,这是在安装脚本中完成的,执行的命令实际上被包装以添加此行为 https://github.com/rubygems/rubygems/blob/abf89e04954b8a2ddfb6948d0860111990a6efa2/lib/rubygems/installer.rb#L652 但我也找不到任何文档记录它。 - Felipe Sabino
实际上,在命令参考中明确提到了这一点。 https://guides.rubygems.org/command-reference/#gem-install对于具有可执行文件的 gem,Ruby 默认会在可执行目录中安装一个包装器文件。可以使用 --no-wrappers 选项覆盖此设置。该包装器允许您使用版本来选择不同的 gem 版本。例如,rake 0.7.3 --version 将运行 rake 版本 0.7.3(如果还安装了更新版本)。 - Satyajeet Kanetkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接