紙一重の積み重ね

35歳のエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【CodeDeploy】rootユーザからubuntuユーザの権限を使用して bundle install したら Could not locate Gemfile と言われてハマった話

f:id:yokoyantech:20181212153643p:plain

やりたいこと

  • 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がないため。 だいぶハマった。この記事に助けられた。

qiita.com

対処

sudo -i -uのコマンドに、cd /Gemfileがあるディレクトリを追加する

sudo -i -u ubuntu bash -c "cd /home/ubuntu/hoge; bundle install --without development test"