[小ネタ][Ruby on Rails]bundle install時にText file busy エラー

rails

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Ruby on Railsでbundle installを実行すると、以下のようなエラーとなりました。
Text file busy @ unlink_internal - ./siteconf20140802-5223-1jn95q9.rb
ググって見ると解決策は見つけることはできましたが、英語での情報がメインだったようなので、日本語の情報として記述しておきます。

原因

Railsのプロジェクトが、VirtualBoxなどの仮想マシンの共有フォルダ内に存在する場合、発生します。bundle installを実行すると、gemをインストールするために共有フォルダを拡張しようとすることが原因のようです。

ちなみに私は以下の環境で発生しました。

  • ホストOS:Windows 7 Pro 64bit
  • ゲストOS:Ubuntu 14
  • 仮想マシン実行環境:Virtual Box 4.3.12

解決方法

bundle installでのgemのインストール先を、共有フォルダの外にします。(もしくはプロジェクト自体を共有フォルダの外に出してもいいです)

1.gemのインストール先フォルダの作成

共有フォルダの外に、bundle install時にgemをインストールするフォルダを作成します。私は/usr/local/srcの下に作成しました。

mkdir /usr/local/src/bundles

2.bundle installの実行

bundle installの実行時に、インストールするパスを指定してコマンドを実行します。

$ bundle install --path /usr/local/src/bundles/プロジェクト名

もしくは既にbundle installを実行し、プロジェクト内に./bundle/config というファイルが存在する場合は、このファイル内にインストールするパスを記述します。

BUNDLE_PATH: "/usr/local/src/bundles/プロジェクト名"

まとめ

仮想マシンを使用してRuby on Railsの開発を行う場合、ちょくちょく仮想マシン固有の事象に遭遇することがあります。WindowsユーザーがRailsの開発を行う場合など、仮想マシンを使うことも多いかと思うので、また何かの事象に遭遇したらブログにアップしていくつもりです。

参考サイト

Resolving bundle install Text file busy error