Ruby on rails -su:bundle:启动unicorn时未找到命令

Ruby on rails -su:bundle:启动unicorn时未找到命令,ruby-on-rails,ruby,nginx,unicorn,digital-ocean,Ruby On Rails,Ruby,Nginx,Unicorn,Digital Ocean,我正在学习DigitalOcean的一个教程(仅供参考,这是教程,,),使用unicorn和nginx安装一个生产就绪的rails应用程序,当我谈到安装unicorn的部分时。当我尝试在控制台中键入以下内容时: sudo service unicorn_appname start 我得到这个错误: Starting appname -su: bundle: command not found 所有用户都可以绑定。这个消息对我来说毫无意义。有什么想法吗?看起来您是使用“系统范围的Ruby/us

我正在学习DigitalOcean的一个教程(仅供参考,这是教程,,),使用unicorn和nginx安装一个生产就绪的rails应用程序,当我谈到安装unicorn的部分时。当我尝试在控制台中键入以下内容时:

sudo service unicorn_appname start
我得到这个错误:

Starting appname
-su: bundle: command not found

所有用户都可以绑定。这个消息对我来说毫无意义。有什么想法吗?

看起来您是使用“系统范围的Ruby/usr/bin/Ruby”启动服务的,它还没有安装gem“bundler”,而不是使用您希望在运行时使用的Ruby版本(通过用户名称空间中的某个位置的RVM或RBENV安装)。在调用“bundle exec unicorn…”之前,确保所需的Ruby版本基础结构位于路径中

我也遵循同样的指南,也有同样的问题

init.d/unicorn_appname中的启动脚本计算为:

su - deploy -c cd /home/deploy/appname && bundle exec unicorn -c config/unicorn.rb -E production -D
启动时的root用户将首先su-进入rails用户(在本例中为“部署”),然后执行捆绑以启动unicorn。rbenv是单用户,仅安装了“部署”捆绑包。如果您按照指南进行操作,绑定的路径很可能存储在.bashrc文件中。但是.bashrc文件,该文件不是通过su登录调用的,它导致bundle not installed错误


解决方案是在.profile中包含与rbenv相关的路径。这样,当根用户进入“部署”时,路径被加载。

您可以通过将rbenv路径添加到您的
配置文件中来解决此问题。

cd ~
vi .profile
查找以PATH=”开头的行 在报价之后添加以下内容: $HOME/.rbenv/垫片:

保存文件(ESC:wq)


按正常方式启动服务。

我的独角兽服务脚本的一部分:

USER="ubuntu"
APP_NAME="my_app_name"
APP_ROOT="/home/$USER/$APP_NAME"
ENV="production"
# environment settings
PATH="/home/$USER/.rbenv/shims:/home/$USER/.rbenv/bin:$PATH"
当我运行
sudo service unicorn start
时,我得到了相同的错误,即
未找到bundle命令

最初,路径出现在我的
.bashrc
文件中

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
.bash\u profile
中添加路径对我起到了作用。我猜它是从
中获取
$path
。bash\u profile
而不是从
中获取的


将此路径复制到
.bash\u profile
后,再执行
源代码。bash\u profile
对我有效。

gem install bundler
?我已经为所有用户安装了
gem install bundler
。如果我没有弄错的话,它似乎已经安装好了……因此出现了奇怪的错误消息。您使用的是RVM还是RBENV?我看到了教程推荐RBENV…我想你可能在这里发现了一些东西,我可能已经安装了这两个,并且混淆了所有内容。我正在重新开始,确保只使用RBENV,我会回来让大家知道发生了什么。好的,我回来了…我再次遵循教程,直到牙齿,只使用RBENV,我得到了完全相同的结果消息。所以,RVM不是问题所在。当我在同一个目录中键入bundler时,我的应用程序会绑定…所以我假设bundler已安装并在该目录下工作。同一个目录:
bundler-v bundler version 1.9.4
那么我如何安装bundler超过已安装的版本?我不明白。发布您的服务在此输入脚本。(首先混淆或删除任何密码)