我正在尝试完全启动我的Rails应用程序,作为传递给启动实例EC2 API的用户数据脚本的一部分。该脚本设置正确的密钥,从我的git repo下载应用程序,然后它应该运行一些初始化脚本,从:
开始bundle install
应安装所有缺失的宝石。但是,它失败了。其他命令工作正常。
原来的失败是它无法找到bundle命令,我已经通过手动设置环境变量修复了这个问题,但Ruby仍然无法找到bundler gem。
我的问题是,当我ssh(一旦用户数据脚本失败)到启动的实例时,bundler工作没有问题。这使我无法调试原始问题。
在哪个凭据下,用户数据是在ec2中执行的?这可能是问题吗?是否有一些特殊原因导致无法从bash脚本调用bundler?
答案 0 :(得分:3)
您是否将目录更改为rails app?
您也可以尝试只调用bundle。如果您还没有找到解决方案,我会尝试这样的事情。
#Pipe stdout and stderr to a log file.
exec &> /home/ubuntu/startup.log
DIR=/home/ubuntu/[rails app]
echo "[START UP] change directory: " $DIR
cd $DIR
echo "[START UP] Update code"
sudo -u ubuntu git pull origin master
echo "[START UP] Bundling latest codebase"
bundle