bundle install の際 psychのインストールに失敗する 【Windows + Ruby3.2以降 + Rails7】
Windows環境で Ruby3.2 + Rails7 のプロジェクトでbundle installを行った際、psychのインストールに失敗し解決までだいぶハマりました。
Windows環境での解決策がなかなか見つからなかったため、対処法を備忘録として書き留めておきます。
An error occurred while installing psych (5.1.2), and Bundler cannot continue.
In Gemfile:
cssbundling-rails was resolved to 1.3.3, which depends on
railties was resolved to 7.1.2, which depends on
irb was resolved to 1.11.0, which depends on
rdoc was resolved to 6.6.2, which depends on
psych
Contents
原因
Ruby3.2から外部ライブラリの同梱が廃止されたようで、libyamlというライブラリが存在しないことによりpsychのインストールに失敗していたようです。
cssbundling-railsを使おうとすると起こるみたいですね。
3rd パーティライブラリのソースコード同梱廃止
libyaml や libffi のような 3rd パーティのライブラリのソースコードの同梱を廃止しましたPsych に同梱していた libyaml のソースコードは削除されました。ユーザーは自身で Ubuntu や Debian プラットフォームなら libyaml-dev パッケージをインストールする必要があります。このパッケージ名称はプラットフォームごとに異なります。
Fiddle に同梱していた libffi のソースコードも削除されました
https://www.ruby-lang.org/ja/news/2022/12/25/ruby-3-2-0-released/ より引用
対処法
1. Windows用のlibyamlをダウンロード
https://packages.msys2.org/package/mingw-w64-x86_64-libyaml にアクセスし、
「mingw-w64-x86_64-libyaml-0.2.5-2-any.pkg.tar.zst」をダウンロードします。
2. ダウンロードしたファイルを解凍
ダウンロードした「mingw-w64-x86_64-libyaml-0.2.5-2-any.pkg.tar.zst」を任意の場所で解凍します。
3. 必要なファイルを配置
(解凍したディレクトリ)/mingw64/include
の中にある yaml.h をコピーし、
(Rubyをインストールした場所)/Ruby32-x64/include/ruby-3.2.0
のディレクトリの中に配置します。
※「Ruby32-x64」や「ruby-3.2.0」のディレクトリ名はRubyのバージョンに合わせて適宜読み替えてください。
続いて、解凍したフォルダの中にある、
(解凍したディレクトリ)/mingw64/lib
の中にある libyaml.a と libyaml.dll.a をコピーし、
(Rubyをインストールした場所)/Ruby32-x64/lib
のディレクトリの中に配置します。
4. 再度bundle installを実行
bundle install を実行します。
もし同じようなエラーが出た場合は、Gemfile.lockを削除してから改めてbundle install を実行してみてください。
おわりに
cssbundling-railsを使おうとすると発生する問題のようなので、もし解決しなかった場合は、cssとjsのバンドル方法をimportmap-railsに切り替えるのもアリかもしれません。
よろしければお試しください。
Share シェアしてほしい
Writer この記事をかいたひと
RYOZEN Scratch Creations代表。
1994年生まれ。千葉育ち。
2019年よりフリーランスで活動を開始。
ディレクションやフロントエンド・バックエンドのコーディング・プログラミング、グラフィックデザインからWEBデザインまで、わりとなんでもやる人。
座右の銘は「レベルを上げて実績で殴れ」。
Other Topics その他のTopics