1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

/usr/local/bundle/bin/railsを削除して大変だったけど、dockerについてちょっと学んだ話。

Last updated at Posted at 2025-04-06

ご挨拶

初めまして!

未経験からエンジニアを目指しプログラミングスクールで学習し、就活中のあいと申します。
/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
    
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?