`block in guess_local_iso’: undefined method `exists?’ for class File (NoMethodError)

普段vagrantを使っていて仮想マシンを立ち上げているのですがファイル共有でエラーになりました。その時の対応を載せていきます。

環境

  • virtualbox 7.1.4
  • vagrant 2.4.3
  • バーチャルマシンはDドライブに保存

となります。

エラー文

D:/vm/SYSTEM/gems/3.3.6/gems/vagrant-vbguest-0.32.0/lib/vagrant-vbguest/hosts/virtualbox.rb:84:in `block in guess_local_iso': undefined method `exists?' for class File (NoMethodError)

            path && File.exists?(path)

こんな感じでエラーとなりました。

一体何が起きているのか?

このエラーがでていると、ホスト側と仮想マシンで出来ていたファイル共有ができなくなります。普段vagrant使っていてファイルを使っている人間としてはかなり大問題となります。

代替案

  • FTP or SFTPでアップ
  • githubなどにアップして使う
  • gitコマンドでアップする

このような方法があると思います。普段からこのやり方をしているなら良いですが、普段はファイル共有している場合は正直手間でしかないです

何が手間なのか?

SFTPやgitなど、特に手間なんかないのでは?と思うかもしれません。実際にテキストにしたとしてもこんな感じです

  1. ファイル編集
  2. ファイル保存
  3. SFTPを起動 or gitコマンドを使う
  4. ファイルをアップ(SFTPの場合はディレクトリ移動あり)
  5. 更新確認

ファイル共有がないと、意外と手間になります。

ファイル共有が出来る場合、1と2だけで反映されるのです。なのでファイル共有は結構重要だなと思ってます。作業効率にも影響するため、なんとか修正したいなと思います。

修正方法

D:/vm/SYSTEM/gems/3.3.6/gems/vagrant-vbguest-0.32.0/lib/vagrant-vbguest/hosts/virtualbox.rb:84:

Dドライブにあるrubyファイルを開きます。エラーはこのvirtualbox.rbの84行目あたりになるみたいです

  • path && File.exists?(path)

これが今回のエラーとなっている原因みたいです。これをこのようにします

  • path && File.exist?(path)

このようにします。これで起動してファイル共有もできるようになります。

参考サイト

個人支援・寄付について

サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。

  • ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS