Topics

トピックス

開発ブログ 2023-12-23

bundle install の際 psychのインストールに失敗する 【Windows + Ruby3.2以降 + Rails7】

\シェアする/

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

    Recommends