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 はちゃんと出来ているはずだが...? という感じ。
回避方法
少し調べてみたが...内容が特殊なせいか今ひとつ情報が出てこない。 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について調べればこの辺わかるのかな...