2013-01-02 27 views
1

以下代码位于我的Rails应用的根文件夹中,并守护进程/运行myserver.rb'require'不能与rvm一起使用

# 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之后在系统级安装gem?

+0

你如何执行'myserver.rb'? –

+0

我从命令行运行'sudo ruby​​ myserver_control.rb start'。这是一个由守护进程ruby gem提供的命令。 – pitachip

+2

不在sudo中运行 – Egryan

回答

1

如果希望使用该系统的红宝石和宝石,你可以键入

rvm use system 

这将允许使用系统安装红宝石和宝石,但我觉得还挺这违背了使用RVM我会的目的而是在RVM中安装一个默认的ruby,并在其中安装任何gem。要设置默认的Ruby你在安装后,根据评论你的问题在于运行sudo的键入此

rvm --default use 1.9.2 

编辑

,这将创建RVM的一个新的子shell和不同的实例

+0

我的rails应用程序一般正在使用rvm安装的宝石。但上面的守护进程控制代码似乎正在显示自己的行为 - 寻找系统宝石,而不是使用rvm已安装的gem。所以我试图弄清楚如何做(1)找到rvm已安装的守护进程gem - 它找不到或者(2)在系统级别安装守护进程gem--考虑到我已经安装了rvm。对这两种解决方案的任何建议都会很好。 – pitachip

+0

好吧,如果你使用rvm使用系统,它会恢复到系统安装的ruby和gems,然后你可以安装守护进程gem。快速的问题是你在安装和设置rvm后重新安装gem。即在您的gemfile中运行dameons gem并运行软件包更新 – Egryan

+0

是的。我在我的Gemfile中确实拥有所有必需的宝石,并运行了软件包更新,所有宝石都安装在预期的文件夹中。这只是我在这里的ruby脚本,似乎在我的宝石寻找错误的地方(系统宝石文件夹)。 – pitachip

0

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

更改ruby版本时,RVM将更改您的GEM_HOME,这会告诉rugege您的gem安装位置。所以当你安装RVM时,你创建了一个新的空白gemset,RVM告诉rubygems使用它。

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

但是,如果您只是编写rails应用程序,则应该忽略上述内容并使用bundler。放置'gem'守护进程''我是您的Gemfile并从您的应用程序根目录运行软件包更新。

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

+0

是的,这就是我已经安装了所有东西,我的导轨应用程序本身可以找到所有的宝石。这是服务器脚本,为我的应用程序做了一些小工作(如上面的那样),似乎无法找到我的应用程序的宝石。我能否以某种方式提供rvm已安装gem的完整路径? – pitachip

相关问题