39964


Minitest実行のために下記のように`sample_test.rb`ファイルを作成しました。

[code]

    require 'minitest/autorun'
    
    class SampleTest < Minitest::Test
      def test_sample
        assert_equal 'RUBY', 'ruby'.upcase
      end
    end
    
[/code]

ここで`sample_test.rb`を実行すると

[code]

    /Users/xxxxx/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/specification.rb:2291:in `raise_if_conflicts': Unable to activate railties-5.1.3, because activesupport-5.1.2 conflicts with activesupport (= 5.1.3) (Gem::ConflictError)
    from /Users/xxxxx/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/specification.rb:1411:in `activate' 
    以下略
    
[/code]

というエラーが確認され、Testに進めません。

`gem cleanup`と`gem uninstall activesupport -v
"5.1.3"`を試してファイル実行しましたが結果変わらず手詰まりになっています。

ちなみにrubyのversionは`ruby 2.4.1p111 (2017-03-22 revision 58053)
[x86_64-darwin16]`です。

ご意見頂きたくよろしくお願いいたします。


CC BY-SA 3.0
2017-12-01T05:27:51.503
39962
2018-10-22T22:21:33.953
question
ruby rubygems bundler
Ruby test raise_if_conflictsのエラーについて


あまり根本的な解決策ではないですが、bundler経由で実行すれば依存関係の問題は解消するかもしれません。

[code]

    gem install bundler
    bundle init
    
[/code]

[code]

    # Edit Gemfile
    gem 'minitest'
    
[/code]

[code]

    bundle install
    bundle exec ruby sample_test.rb
    
[/code]

「プロを目指す人のためのRuby入門」をお持ちなら、第12章のBundlerの説明も参照してください。

**2018.10.23追記**

この問題は新しいバージョンのRailsをインストールすることで解決するかもしれません。  
詳しくは以下の記事をご覧ください。

[「プロを目指す人のためのRuby入門」でテスト失敗時に実行結果が正常に表示されない場合 -
Qiita](https://qiita.com/jnchito/items/1e928f8088b2cc6bd3fa)


CC BY-SA 4.0
2017-12-01T07:10:18.093
39964
2018-10-22T22:21:33.953
2018-10-22T22:21:33.953
85
85
39962
answer