#経緯
スクレイピングについて少し学習しようと思い、
Rubyを使って20分でスクレイピングの大元を作るを参考に実装。
「Gemはvendor/bundle配下にインストールするようにします。」とあるので、
指示通りbundle installするときに --path vendor/bundle
のオプションを追加。
#エラー発生
記事の通りのcodeをmain.rbに書き込み、main.rbを実行すると、
training $ ruby main.rb
Traceback (most recent call last):
2: from main.rb:2:in `<main>'
1: from /Users/yusaku/.rbenv/versions/2.6.0/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Users/yusaku/.rbenv/versions/2.6.0/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- nokogiri (LoadError)
'require': cannot load such file -- nokogiri (LoadError)
と書かれているが、
nokogiriはvender/bundle
配下にbundle install済みである。
training $ ls vendor/bundle/ruby/2.6.0/gems/
byebug-11.1.3 method_source-1.0.0 nokogiri-1.10.10 pry-byebug-3.9.0
coderay-1.1.3 mini_portile2-2.4.0 pry-0.13.1
解決
エラーの内容をよくみて見ると、
/Users/yusaku/.rbenv/
配下を探しに行っているように見える。
それでハッとしたのだが、bundle execをしていなかった。
training $ bundle exec ruby main.rb
これでエラーも発生せず、main.rbが実行できた(require "nokogiri"もできた)。
bundle exec
をすることによって、同一ディレクトリ配下でgemを探してくれたように見える。