やりたいこと
- CodeDeployで
bundle install
したい.rbenv
をインストールしたのはubuntu
ユーザであるため、root
からubuntu
ユーザに切り替わって実行する必要がある。
- こんな感じの
application_start.sh
を書いた。
#!/bin/bash cd /home/ubuntu/hoge sudo -i -u ubuntu echo $PATH sudo -i -u ubuntu bundle install --without development test
発生したエラー
$ sudo -i -u ubuntu bundle install --without development test Could not locate Gemfile
実行ディレクトリにGemfile
がない、とのことだが、カレントディレクトリでls
で確認するとGemfile
は存在する。
root:/home/ubuntu/hoge# ll total 140 drwxr-xr-x 14 ubuntu ubuntu 4096 Dec 12 14:45 ./ drwxr-xr-x 9 ubuntu ubuntu 4096 Dec 12 14:34 ../ -rw-rw-r-- 1 ubuntu ubuntu 2252 Dec 12 13:46 Gemfile -rw-rw-r-- 1 ubuntu ubuntu 27838 Dec 12 13:46 Gemfile.lock
原因
sudo -i -u
でコマンドを実行する移動先のディレクトリに、Gemfile
がないため。
だいぶハマった。この記事に助けられた。
対処
sudo -i -u
のコマンドに、cd /Gemfileがあるディレクトリ
を追加する
sudo -i -u ubuntu bash -c "cd /home/ubuntu/hoge; bundle install --without development test"