1

以下代码位于我的 rails 应用程序的根文件夹中并 daemonizes/runs 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 之前它工作得很好,现在它似乎找不到守护进程 gem。我有一种感觉,也许上面是在某个系统范围的文件夹中搜索守护进程 gem?而不是能够使用 rvm 安装的守护进程 gem?如何在可以找到它的系统级别上安装守护程序 gem?或者我该如何做才能找到 rvm 安装的 gem?

目前我什至没有“系统”宝石集。已经安装 rvm 后,如何在系统级别安装 gems?

4

2 回答 2

1

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

rvm use system

这将允许使用系统安装的 ruby​​ 和 gems,但我认为这有点违背使用 RVM 的目的,我会在 RVM 中安装一个默认的 ruby​​ 并在其中安装任何 gems。要在安装后设置默认 Ruby,请键入

rvm --default use 1.9.2

编辑

根据评论,您的问题在于运行 sudo,这会创建一个新的子外壳和不同的 rvm 实例

于 2013-01-02T16:16:31.350 回答
0

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

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

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

但是,如果您只是编写 rails 应用程序,您现在应该忽略以上内容并使用 bundler。Place 'gem "daemon"' 我是你的 Gemfile 并从你的应用程序根目录运行包更新。

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

于 2013-01-02T16:28:55.653 回答