vagrant up 中にパソコンがエラーで強制終了されてしまった後、vagrant upの最後に下記のようなエラーが出るようになりました。
C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.4.0/json/common.rb:156:in `parse': 751: unexpected token at '' (JSON::ParserError)
from C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.4.0/json/common.rb:156:in `parse'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/lib/vagrant/action/builtin/mixin_synced_folders.rb:237:in `cached_synced_folders'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/lib/vagrant/action/builtin/mixin_synced_folders.rb:77:in `save_synced_folders'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/lib/vagrant/action/builtin/synced_folders.rb:129:in `call'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/lib/vagrant/action/warden.rb:34:in `call'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/lib/vagrant/action/builtin/synced_folder_cleanup.rb:28:in `call'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/lib/vagrant/action/warden.rb:34:in `call'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/plugins/synced_folders/nfs/action_cleanup.rb:25:in `call'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/lib/vagrant/action/warden.rb:34:in `call'
from C:/HashiCorp/Vagrant/embedded/gems/2.2.1/gems/vagrant-2.2.1/plugins/providers/virtualbox/action/prepare_nfs_valid_ids.rb:12:in `call'
:
:
(略)
ネットで少し調べたところ、vagrant destroyしてupしたら良いと書いてあったりしたのですが、今までのデータがなくなるのも嫌だし、特に困ることなく普通に使用できていたので見て見ぬふりをしていたのですがw、少し時間ができたので原因調査しました。
common.rbのエラー箇所の前に p caller
を書いてvagrant upし辿っていくと、
「synced_foldersファイルがJSON::Parserでパースできない」
とのこと。
synced_foldersは
#{Vagrantfileがあるフォルダ}/.vagrant/machines/#{マシン名}/virtualbox
の中にあり、開いてみるとnull文字のみが書かれていて中身が壊れてしまっていたようでした。
このマシンではsynced_foldersは使用していなかったので、synced_foldersの中にデフォルト設定の
{"virtualbox":{"/vagrant":{"guestpath":"/vagrant","hostpath":"#{Vagrantfileがあるフォルダフルパス}","disabled":false,"__vagrantfile":true}}}
と記述して保存、vagrant upを試すとエラーが出なくなりました♪
同じことはそうそう起きないかなと思うので、このエラー自体の備忘録というよりは、
ちゃんとエラー元追いかけたら解決できることも多いよ(しかもrubyやし)という備忘録です