ご挨拶
初めまして!
未経験からエンジニアを目指しプログラミングスクールで学習し、就活中のあいと申します。
/usr/local/bundle/bin/railsを削除して大変でしたが、dockerについてちょっと学んだことをまとめております。
どなたかのお役に立てますと幸いです。
前提
初学者がアプリ開発を通して学んだことをまとめておりますので、温かい目で見守ってくださると幸いです。
もし別の方法でうまくいっている方がいらっしゃれば、教えていただけますと幸いです。
状況
Rails Tutorialで、環境構築はdocker、本番環境はflyioで実装。
発生したエラー
- Rails8がインストールされてしまい、Rails7にインストールし直したが、ターミナルで
rails -vで確認するとバージョンがRails8のままだった。 - それを解決するために、誤って消しちゃいけない
/usr/local/bundle/bin/railsを削除し、railsコマンドが使えなくなった。-
rails newとかができなくなった。
-
使用資料
- lnコマンドめっちゃ便利。
- スクール生自作資料
-
- エラー解決後、スクールの講師に
/usr/local/bundle/bin/railsに対する自分自身の理解と認識を確認した。
- エラー解決後、スクールの講師に
解決策
- 上記エラーを、
ln -s コマンドで解決。
詳細
-
lnコマンドは、リンクを貼るコマンド。 -
ln -s コマンドは、シンボリックリンクを貼るコマンド。
考察
- 今回の場合は、
Railsのコマンド本体(Rubyで書かれた実行スクリプト)を/usr/local/bundle/bin/railsこの名前で呼ばれるようにするために、ln -s コマンドを使って、「railsコマンドの入り口」を作り直したので、解決した。- 「railsコマンドの入り口」を作る必要があるので、ディレクトリをただ作り直すだけではダメ。
-
/usr/local/bundle/bin/railsの削除は、他のコンテナやアプリにも影響が出る。- Dockerfile内の下記の記載によって、ファイルが実行されたときに、
/usr/local/bundle /usr/local/bundleが参照される。Dockerfileに下記の記載があれば、他のアプリディレクトリやコンテナでも共通で参照される。 - railsをインストールすると、
/usr/local/bundle /usr/local/bundleファイル下にbin/railsができる。そこに、railsのファイルデータは保存される。 - そのため、
/usr/local/bundle/bin/railsを削除すると、他のコンテナ(下記の記載がdockerfileにあるコンテナ)は影響を受ける。
# Dockerfile内の下記の記載 # Copy built artifacts: gems, application COPY --from=build /usr/local/bundle /usr/local/bundle COPY --from=build /rails /rails - Dockerfile内の下記の記載によって、ファイルが実行されたときに、