2021年5月17日月曜日

bundle exec は vendor 配下のライブラリしか参照しないので注意しよう

bundle exec は vendor 配下のライブラリしか参照しないので注意しよう

概要

bundle exec は ruby 標準のライブラリを読み込まないので注意が必要です

環境

  • macOS 11.3.1
  • Ruby 3.0.0p0
    • bundle2.2.3

検証

例えば rss というライブラリは標準ライブラリとしてインストールはされますが bundle 経由だと標準では使えません

  • bundle exec -> Error
  • ruby -> OK
  • irb -> OK
% bundle exec irb
irb(main):001:0> require 'rss'
Traceback (most recent call last):
        5: from /usr/local/opt/ruby/bin/irb:23:in `<main>'
        4: from /usr/local/opt/ruby/bin/irb:23:in `load'
        3: from /usr/local/Cellar/ruby/3.0.0_1/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>'
        2: from (irb):1:in `<main>'
        1: from (irb):1:in `require'
LoadError (cannot load such file -- rss)
% irb
irb(main):001:0> require 'rss'
=> true
% ruby -e 'puts require "rss"'
true

対処方法

対処としては Gemfile に rss を書き加えた上で bundle install してから実行します

  • vim Gemfile
gem "rss"
  • bundle install
% bundle exec irb
irb(main):001:0> require 'rss'
=> true

当たり前といえば当たり前ですが標準ライブラリで発生する可能性があるので注意しましょう また Ruby のバージョンにもよるので注意しましょう バージョンによっては標準ライブラリから外れている gem もあります

0 件のコメント:

コメントを投稿