ターミナルで入力するコマンドでたまに出てくるsudo
だが、これのせいで私は半日程度苦しんだのでここに残しておく。
Ruby on Rails チュートリアルをやっていたときに途中で自分のコードがおかしくなり、仕方なく筆者の方のgithubからクローンしてやり直すことになった。
その際master.keyファイルが無かったため、
master.keyが見つからない問題 [初見殺し] - はじめてのデプロイで嵌るポイント
の記事などを参考にしてcredentialsyml.encも消してから自分で新しく二つとも作り直そうとして、ターミナルで
sudo EDITOR="vi" rails credentials:edit
を実行した。
「管理者権限が必要なんやなー」くらいのノリで実行したが、
結論から言えばこのsudo
が悪さをしており、sudo
無しで
EDITOR="vi" rails credentials:edit
と実行すれば正解であった。
上記でsudo
を使用した弊害として、rails s
rails routes
などのコマンドを打つと
/Users/ユーザー名/.rbenv/(略)/encrypted_file.rb:118:in `binread': Permission denied @ rb_sysopen - /Users/ユーザー名/environment/sample_app/config/master.key (Errno::EACCES)
というエラーが出た。
どうやらファイルへの権限から来るエラーのようだったが、
前後どっちのファイルの権限を直せば良いのかわからなかった。
.rbenv
の方の権限を直そうとしたがうまくいかず、
master.key
の方も何回も作り直したがうまくいかなかった。
しかしmaster.key
を作り直すというのは実は合っていたようだ。
sudo
は管理者権限で何でもできる便利なコマンドだなーと思っていたら、
どうやらsudo
を使ってターミナルで実行すると生成されたファイルとかも管理者じゃないとアクセスとかがダメになってしまうらしいという記事
Ruby gem install bundler で Permission denied エラーになった
等を見つけたので、試しにsudo
を外して
EDITOR="vi" rails credentials:edit
でmaster.key
を作ったら一発だった。
当然sudo
が便利なときや必要な時はあるのだろうが、こういったトラブルの元になることもあるため慎重に使っていきたい。