从shell脚本中运行“passenger start”?

时间:2012-03-27 00:59:31

标签: ruby-on-rails rvm passenger

基本上,“乘客开始”在终端上运行良好,但像“乘客开始”这样的简单脚本不起作用,因为它失败了:

*** Exception PhusionPassenger::UnknownError in PhusionPassenger::Rack::ApplicationSpawner (Could not find abstract-1.0.0 in any of the sources (Bundler::GemNotFound)) (process 19278, thread #<Thread:0x7f16dbfaf368>):

让我觉得它再也找不到宝石了。这似乎是Google上一个非常普遍的问题,但我找不到任何简单的答案。我不想用这样的东西来修补我的rails应用程序:http://blog.ninjahideout.com/posts/the-path-to-better-rvm-and-passenger-integration(我实际上无法开始工作)

似乎难以置信的是,没有一种简单的方法可以解决这个问题。为什么从shell脚本运行乘客与手动输入不同?


更新:基本上,我通过不使用乘客来修复它。我没有使用“乘客开始”,而是使用“rails服务器”,它运行正常。现在,显然,这并没有“解决”我遇到的问题,但它足以满足我的发展需求。

我还想详细说明我的设置,因为我觉得我有点模糊。

基本上,我有一个名为start_rails.sh的脚本

#!/bin/bash
cd /rails/app
passenger start

它不起作用,我在阳光下尝试了所有东西,包括搜索我所有的bash文件,但没有任何效果。我改成了:

#!/bin/bash
source "$HOME/.rvm/scripts/rvm"
cd /rails/app
rails s

现在它有效。我可以从一个upstart脚本运行它:

start on started mysql
exec sudo -u ubuntu -i /home/ubuntu/bin/start_rails.sh

然而,“乘客开始”仍然无法工作,从来没有,我想永远不会= PI仍然不知道为什么没有办法运行shell脚本并告诉它“运行它就像我一样正在手动输入“因为简单地键入”乘客开始“确实有效。从shell脚本来看,它没有。那好吧。生活还在继续。

1 个答案:

答案 0 :(得分:1)

如果您可以毫无问题地亲自驾驶乘客,那么您现在处于有利位置:)。 我想在您登录时设置的环境变量存在一些问题,但在运行脚本时则没有。尝试在脚本的开头添加这两行:

source ~/.bash_profile
source ~/.bashrc
相关问题