Minitestコンフリクト問題
はじめに
明けましておめでとうございます。2019年はアウトプットの量を増やし、為になる技術ブログにしていきたい所存です。
今回の概要
「プロを目指す人の為のRuby入門」の第4章の課題写経中、エラーに遭遇しました。 作成中のプログラムはRubyメソッドをTDDで進めるシンプルなプログラムです。
テストコード
require 'minitest/autorun' require './lib/rgb' class RgbTest < Minitest::Test def test_to_hex assert_equal '#000000', to_hex(0, 0, 0) assert_equal '#ffffff', to_hex(255, 255, 255) assert_equal '#043c78', to_hex(4, 60, 120) end def test_to_ints assert_equal [0, 0, 0], to_ints('#000000') assert_equal [255, 255, 255], to_ints('#ffffff') assert_equal [4, 60, 120], to_ints('#043c78') end end
コード
def to_hex(r, g, b) [r, g, b].inject('#') do |hex, n| hex + n.to_s(16).rjust(2, '0') end end def to_ints(hex) r = hex[1..2] g = hex[3..4] b = hex[5..6] ints = [] [r, g, b].each do |s| ints << s.hex end ints end
その際に、テストを実行すると
ruby test/rgb_test.rb
こんなエラーが出ました。
Traceback (most recent call last): 13: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.3/lib/minitest.rb:63:in `block in autorun' 12: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.3/lib/minitest.rb:121:in `run' 11: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.3/lib/minitest.rb:92:in `load_plugins' 10: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.3/lib/minitest.rb:92:in `each' 9: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/minitest-5.11.3/lib/minitest.rb:98:in `block in load_plugins' 8: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require' 7: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require' 6: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/railties-5.2.1/lib/minitest/rails_plugin.rb:4:in `<top (required)>' 5: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in `require' 4: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:128:in `rescue in require' 3: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems.rb:217:in `try_activate' 2: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems.rb:224:in `rescue in try_activate' 1: from /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/specification.rb:1437:in `activate' /Users/sugiwaka/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/specification.rb:2324:in `raise_if_conflicts': Unable to activate railties-5.2.1, because activesup port-5.2.2 conflicts with activesupport (= 5.2.1) (Gem::ConflictError)
minitestはrdenvをローカル環境に入れた時点で自動的に導入されるのですが、どうやらバージョンコンフリクトを起こしている模様です。 (https://qiita.com/jnchito/items/1e928f8088b2cc6bd3fa)
Unable to activate railties-5.2.1, because activesup port-5.2.2 conflicts with activesupport (= 5.2.1) (Gem::ConflictError)
上記リンクに記載されている解決法(自分は --no-pluginsコマンドを使いました)で、手元のエラーは解決したのですが、 minitestプラグインがどう読み込まれているか気になったので、確認してみます。→次回
🐤