すっごい悩んだのでメモしておく。
Vagrantで遊んで、O’REILYから出ている「実践Vagrant」を読んでプラグインを作ろうってなって、書籍の通り進めたつもりなのにエラーが出て進めなかった。
試したのはWindows 8環境です。
bundle exec Vagrant free-memory
って実行すると、次のようなエラーが出て解決できない!
/home/thoraxe/.gem/ruby/1.9.1/bundler/gems/vagrant-d81af187eae3/lib/vagrant/pre-rubygems.rb:16:in `require_relative’: /home/thoraxe/.gem/ruby/1.9.1/bundler/gems/vagrant-d81af187eae3/lib/vagrant/bundler.rb:188: syntax error, unexpected tPOW (SyntaxError)
def internal_install(plugins, update, **extra)
^
/home/thoraxe/.gem/ruby/1.9.1/bundler/gems/vagrant-d81af187eae3/lib/vagrant/bundler.rb:257: class definition in method body
/home/thoraxe/.gem/ruby/1.9.1/bundler/gems/vagrant-d81af187eae3/lib/vagrant/bundler.rb:273: syntax error, unexpected keyword_end, expecting $end
from /home/thoraxe/.gem/ruby/1.9.1/bundler/gems/vagrant-d81af187eae3/lib/vagrant/pre-rubygems.rb:16:in `<main>’
解決方法
原因は恐らくRubyのバージョン問題ちっく。
試行錯誤しすぎて環境がよごれまくっているので、下記対応だけで良いのか、正しいのかは結構怪しいけど、まぁ自分の環境で最後にやった作業ってことで。
RubyInstallerでRubyとRubyGemsをインストールしようっとP.120に書かれているのだけど、それが不要(かも)。代わりに、Vagrantに梱包されているRubyを使うように環境変数をセットしてあげる。
「C:\HashiCorp\Vagrant\embedded\bin」にPathを通してあげると、上記エラーは出なくなった!やったね。
本当に正しいのかは一抹の不安を感じるが。