【问题标题】:How to install a gem inside a gemset from Ruby code?如何通过 Ruby 代码在 gemset 中安装 gem?
【发布时间】:2014-01-17 00:17:33
【问题描述】:

我正在尝试从 Ruby 代码中遵循这个确切的工作流程:

  1. rvm use 2.0.0@some-name --create
  2. gem install some-gem

我没有找到太多关于在 Ruby 中使用 RVM 的文档。

编辑:我知道这些步骤在 shell 中是正确的,但我想在 Ruby 脚本中运行它们。例如 ruby myscript.rb 将运行这两个步骤。

将这两个指令放在反引号中时,它不起作用,并且上面示例中的 some-gem 会安装在当前正在使用的任何 gemset 中。

编辑 2:我想要一个 Ruby 脚本来创建一个新的 RVM gemset 并在其中安装一个 gem(例如,设计)。

【问题讨论】:

  • 嗯? RVM 不是 gem,也不是 Ruby。如果你打算与它交互,那么你可以使用它的接口,这是你已经熟悉的。如果您需要学习如何通过 Ruby 与 shell 交互,我建议您查找有关多种方法的信息。
  • 您的步骤是正确的。你想达到什么目标?
  • 为清晰起见对问题进行了编辑。基本上,我想通过编写 Ruby 脚本来控制和自动化一些 RVM 任务。到目前为止,我已经在 bash 中完成了它,但它不是很便携。
  • @coreyward 从 Ruby 与 shell 接口,我知道怎么做。但是当尝试从 Ruby(在 shell 中)运行 RVM 命令时,我得到了臭名昭著的“rvm is not a function”错误。
  • 你能把你的 myscipt.rb 文件粘贴到这里吗

标签: ruby rvm gemset


【解决方案1】:

“rvm 不是函数” 这是因为 rvm 未在您的环境中加载,look up here,请参阅 3.重新加载 shell 配置和测试安装疑难解答

此外,如果您想处理项目中的 gem,您可以使用 bundler

【讨论】:

  • 它在我的路径中。它在 Bash 脚本中运行良好。它不是来自 Ruby 脚本。
  • 好的,我找到了thisthis question 也许这些对你有帮助
【解决方案2】:

正如 Michal Papis 在 Github 上的 this question 所回答的那样,这只能通过稍微修改并使用 rvm-with gem 来完成:

require "rvm/with"
RVM.with "2.1.0@gemset --create" do |r|
  puts r.execute "gem install ..."
  puts r.execute "bundle exec ruby ./continuation_script.rb"
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多