お首が長いのよお首が長いのよ

チラシの裏よりお届けするソフトウェアエンジニアとして成長したい人のためのブログ

事象

rails tutorial を Cloud9 ではなく、ローカル環境で実施しようと思い、ローカルに Ruby, Rails の環境を構築した。

チュートリアル内の指示に従って rails _6.0.4_ new hello_app を実行した所、正常にフォルダが作成されない状況となった。

エラー内容

couldn't set additional authenticated data (OpenSSL::Cipher::CipherError)

エラー内容全文は下記。手元にはログが残っていないので、全く同じ状況だった記事から引用。

/Library/Ruby/Gems/2.6.0/gems/activesupport-6.0.3.6/lib/active_support/message_encryptor.rb:173:in `auth_data=': couldn't set additional authenticated data (OpenSSL::Cipher::CipherError)

引用:rails new でフォルダが作成されない

環境

  • Ruby: 2.7.2 ( installed on rbenv )
  • Rails: 6.0.4
  • HW: Apple M1 MacBookPro 2020

原因

原因となりうるかは不明だったが、上記で記述した環境とは認識のないところで環境がごちゃごちゃになっており、各コマンド実行時のパスや実行バージョンがバラバラになっていたのが原因の可能性が高い。

  • rbenv を使って ruby 2.7.2 をインストールしているが、 macOS で使っている 2.6.8 を読み込んでいる
  • 過去に環境変数 GEM_HOME に対して下記のようなパスを指定していたのが .bash_profile に残っており、rbenv を用いて Ruby をいかなるバージョンに変更した場合でも、 gem でインストールした際のパスが特定のパスに固定されてしまっている

対応

Ruby(rbenv経由)、gemあたりをすべてアンインストールし、環境変数やコマンドのパスを再設定することで正常に動作した。

正常動作時の各コマンド実行時の実行ファイルは下記の通り。

bash: title=bash
1% which gem
2/Users/{USER}/.rbenv/shims/gem
3
4% which ruby
5/Users/{USER}/.rbenv/shims/ruby
6
7% which rails
8/Users/{USER}/.rbenv/shims/rails
9

rbenv を使っている場合、 ruby 製ツールの多くは .rbenv/shims 配下のパスを使用するため、 which コマンドを使って /usr/local/ 配下を参照している場合は正しくインストールできていない可能性が高い。

/以上

よかったらシェアしてください!