'要求'不与rvm合作

时间:2013-01-02 15:47:49

标签: ruby rvm

以下代码位于我的rails app的根文件夹中,并且守护/运行myserver.rb

# myserver_control.rb

require 'rubygems'
require 'daemons'    # causes 'no such file to load -- daemons' error since gem reinstall with rvm

@options = {
    # options defined
}

Daemons.run('myserver.rb', @options)

在安装rvm之前它工作正常,现在它似乎无法找到守护进程的宝石。我有一种感觉,也许以上是在某个系统范围的文件夹中搜索守护进程的宝石?而不是能够使用rvm安装的守护进程gem?如何在可以找到它的系统级别安装守护进程gem?或者我如何才能找到rvm安装的宝石?

目前我甚至没有系统'宝石套装。在安装了rvm后,如何在系统级别安装gem?

2 个答案:

答案 0 :(得分:1)

如果希望使用系统ruby和gem,您可以输入

rvm use system

这将允许使用系统安装ruby和gem,但我认为这有点失败了使用RVM的目的我会在RVM中安装默认ruby并安装任何宝石。要在安装后设置默认Ruby,请键入此

rvm --default use 1.9.2

修改

基于评论你的问题在于运行sudo,这会创建一个新的子shell和不同的rvm实例

答案 1 :(得分:0)

RVM使用gemsets的概念,它是您可以使用的唯一一组宝石,通常特定于ruby版本(尽管您可以使它们特定于应用程序或全局)。

RVM将在更改ruby版本时更改您的GEM_HOME,这将告知ru ygems您的gem的安装位置。因此,当您安装RVM时,您创建了一个新的空白gemset,并且RVM告诉rubygems使用它。

这是因为宝石在rubygems之间并不总是交叉兼容。

但是,如果您只是编写rails应用程序,则应暂时忽略上述内容并使用bundler。放置宝石"守护进程"'我是你的Gemfile并从你的app根目录运行bundle update。

Bundle可以帮助您在每个应用程序的基础上维护宝石,这意味着如果您在其他地方升级宝石,您的应用程序将不会中断。使用它并了解它是如何工作的最佳实践。祝好运。