为什么在安装目录之外我得到乘客:找不到命令?

时间:2014-02-26 20:37:17

标签: ruby-on-rails apache passenger

我刚刚使用Ubuntu 12 LTS构建了一个RackSpace云服务器,并执行了“标准”Ruby on Rails安装。我创建了一个用户(bob)并将其添加到sudu组。

然后我退出root并以bob身份登录。然后从sudo su目录发出/home/bob。然后我安装了以root身份运行Rails应用程序所需的一切。

然后我在/home/bob中安装了Rails代码,当我发出时,乘客启动了:

RAILS_ENV=production passenger start -p 3000

但是,由于我想在此服务器上运行多个Rails应用程序,然后我创建了另一个目录/home/bob/newapp并在那里安装了Rails代码。 (理想情况下,我希望将所有不同的Rails应用程序放在/home/bob下面的子目录中

当我从/home/bob/newapp

发出命令(如下所示)时
RAILS_ENV=production passenger start -p 3000

我得到了

  

乘客:未找到命令

为什么乘客只能从/home/bob访问?

新闻:刚刚发现,在我完成/config/database.yml内容编辑的那一刻,乘客“可用”,因此只要我不编辑database.yml文件,乘客就会开始。编辑database.yml后,出现“乘客:未找到命令”。这有多奇怪?

SNAP:看起来当我安装乘客时它使用的是Ruby-2.1.1,但旧的应用程序需要ruby-1.9.3-p194。我需要弄清楚如何让乘客与ruby 1.9.3一起运行或安装第二版乘客(???)

更多新闻: 感谢Hongli,感谢您的回复。我按照您的链接/建议阅读乘客文件。我以前读过它而没有认识到所需的信息。这次我找到了“神奇”的命令:

rvm-exec ruby-version ruby -S (eg: rvm-exec ruby-1.9.3-p194 ruby -S )

这已经证明是非常有用的,尽管我最终确实遵循了导致安装了两个不同版本的乘客的过程。

2 个答案:

答案 0 :(得分:0)

阅读Phusion Passenger手册的About environment variables部分,了解“找不到命令”错误,发生错误的原因,以及您通常可以做些什么。

在您的情况下,输入/ home / bob会自动使RVM更改您的PATH以包含特定的Ruby版本的bin目录。阅读Phusion Passenger手册的When the system has multiple Ruby interpreters部分,了解如何处理。

答案 1 :(得分:0)

Hongli建议我阅读的文章肯定让我朝着正确的方向前进。

使用:rvm-exec'ruby-version'ruby -S允许我启动乘客,只要使用Rails应用程序所需的ruby版本安装了乘客版本。

因此,如果我加载使用ruby-1.9.3-p194构建的Rails应用程序,我将需要安装相同版本的ruby的乘客版本。

如果我加载了另一个使用ruby-1.9.3-p286构建的Rails应用程序,我将需要安装该版本的ruby版本的乘客。

然后可以使用带有相应ruby版本的rvm-exec命令来启动每个版本的乘客。

也许有一个更优雅的解决方案,但上述方法对我有用。