Rails7 + tailwindcss-railsの環境で、privateなgithubリポジトリ上の自作gemをGemfile上で参照した場合、bin/devからのアプリケーション起動で'xxx is not yet checked out. Please run `bundle install`' のエラー

かなり謎な内容なのだが...

タイトルの通り Rails7 + tailwindcss-railsの環境で、
privateなgithubリポジトリ上の自作gemをGemfile上で参照した場合に、
bin/dev(foreman)からのアプリケーション起動が 'xxx is not yet checked out. Please run bundle install' というエラーが出て失敗する。

一応回避できたが全く理由は分からない。一度回避した後は再現もしなくなってしまった。 記録のためにやったことを記載しておく。

前提

Rails7 + tailwindcss-rails

Rails7でcssをtailwindを使用する場合 tailwindcss-rails gemの利用が推奨されている。

インストールすると rails serverとbin/rails tailwindcss:watch(tailwind cssの変更監視&再コンパイル用コマンド)を別プロセスで起動するために以下のような bin/dev が作成される。

開発環境においてはbin/devを用いてアプリケーションを立ち上げることになる。
(手動で2つ立ち上げても同じことではある)

# bin/dev
exec foreman start -f Procfile.dev "$@"

# Procfile.dev
web: bundle install; bin/rails server -p 3000
css: bundle install; bin/rails tailwindcss:watch

privateなgithubリポジトリの自作gemを利用

privateなgithubリポジトリのgemを利用する方法はいくつかあるが、ここでは簡易的にsshの利用することにする。 Gemfileに対して以下のように記載する。

gem 'your_gem_name', git: 'git@github.com:your_username/your_repo.git', branch: 'your_branch'
# 事前に自分のSSHキーをGitHubに登録しておく必要がある

参考 obel.hatenablog.jp qiita.com

現象

上記2つの前提を満たした上で

つまり

の状況において、

bin/dev を用いて Railsアプリケーション(& tailwind cssの変更監視&再コンパイル)を起動しようとすると以下のようなエラーが発生した。

https://xxxxxx@github.com/XXX/my_gem.git is not yet checked out. Please run `bundle install`

この事象は以下のような前提条件のもと起きている。

  • bundle installは実施済み
  • bin/rails s と tailwindcss:watch をterminal上で個別に実行すると問題なく起動する。

自分から見ると bundle install はちゃんと出来ているはずだが...? という感じ。

回避方法

少し調べてみたが...内容が特殊なせいか今ひとつ情報が出てこない。 ChatGPTに聞いても残念ながら的を射た回答は得られなかった(質問の仕方が悪いのかもしれないが...)

ただ エラーメッセージ的には foremanの環境とターミナルの環境が別になっているように感じられる。

そこで以下のようにProcfileを修正した上でbin/devを実行することで、現象を回避することができた。

web: bundle install; bin/rails server -p 3000
css: bundle install; bin/rails tailwindcss:watch

それぞれのコマンドの前にbundle installをつけることで、foremanの環境(?)においてもbundle installの実行を保証している。

なお、一度回避した後は、Procfileから bundle installを抜いても問題なく起動するようになった。 やはり何かしら環境は存在しているように見える。foremanについて調べればこの辺わかるのかな...