2518


IntelliJIDEAでRuby on RailsプロジェクトのRSpecを実行する方法が分からなくて困っています。

どなたか、教えていただけないでしょうか？

# 追記

RspecをInstallしたあとでspecを右クリックからAll Spec in modelsを実行すると以下のエラーメッセージが出ます。

[code]

    /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require': cannot load such file -- teamcity/spec/runner/formatter/teamcity/formatter (LoadError)
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1072:in `block in requires='
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1072:in `each'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1072:in `requires='
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration_options.rb:103:in `block in process_options_into'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration_options.rb:102:in `each'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration_options.rb:102:in `process_options_into'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration_options.rb:22:in `configure'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:95:in `setup'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:84:in `run'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:69:in `run'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in `invoke'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/exe/rspec:4:in `<top (required)>'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `load'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `block in load'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `load'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/spring-commands-rspec-1.0.4/lib/spring/commands/rspec.rb:18:in `call'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
      from /Users/seijiro/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
      from -e:1:in `<main>'
    
    Process finished with exit code 1
    
[/code]

teamcityも使用してなく、IntelliJの設定もこの辺に関しては初期設定の状態です。

IntelliJの設定周り調べます。


CC BY-SA 3.0
2014-12-23T17:47:10.417
2438
2014-12-25T16:32:36.517
2020-06-17T08:14:45.997
-1
4041
question
ruby ruby-on-rails intellij-idea
IntelliJIDEA14でRuby on Rails上のRSpecを実行する方法


今どの状態かわかりませんが、

通常通り rspec-railsをGemfileに登録して、

Bundlerのinstallでインストール  
(Tools > Bundler > install / Shift+Cmd+A から `Bundler` で検索 > install )

`Reload Generators` でRails Generatorをリロード (Shift+Cmd+A から `Reload
Generators`など )

`rspec:init` して (alt + G / Tools > Run Rails Generator で、generator nameに
`rspec:init`)

プロジェクトツリーでspecのディレクトリを右クリックすると run all spec とか出てきたと思います。
もしくは各specの上で右クリックすればそのテストだけ実行することもできます。

* * *

# 追記 (12/26)

追記されたエラーコードを見てからいろいろと調べていたのですが、 エラーがいろいろと出ているようでYoutrackにもレポートされたこともあるようです。

[RUBY-15184 Unable to find the
teamcity/spec/runner/formatter/teamcity/formatter
file](https://youtrack.jetbrains.com/issue/RUBY-15184) [RUBY-15258 teamcity
Rspec Test Runner not working for RubyMine 6.3 on
Ubuntu](https://youtrack.jetbrains.com/issue/RUBY-15258)
直し方もいろいろと見かけました(リンクだけ最後に挙げておきます)。

既に解決されたようですが、わかる範囲で少し説明を書きたいと思います。

いろんなバージョンを入れてみたりはしたのですが手元で同じ様な状況にすることができなかったので検証はできていません。

## エラー内容

エラーの内容は

[code]

    /(pathto_ruby)/ruby -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /(pathto_rspec)/rspec /(pathto_spec)/contact_spec.rb --require teamcity/spec/runner/formatter/teamcity/formatter --format Spec::Runner::Formatter::TeamcityFormatter
    
[/code]

T

の様に、rspecの実行に`teamcity/spec/runner/formatter/teamcity/formatter`が必要であるようにオプション指定されているためです。
（このモジュールは私の環境では `/Users/username/Library/Application
Support/IntelliJIdea14/ruby/rb/testing/patch/bdd` などにありました。）

何かしらの理由でこのモジュールが参照できないためにエラーが発生しています。

## 対策

### springがIntelliJ IDEA/RubyMine以外が起動しているケース

他回答でJunichi Itoがあげているspring stopすれば直るケースです。 これで直ったとコメントしている人は結構みかけました。

これはコマンドなど、IDEA/RubyMine以外の方法でspringが起動されていると、そちらではIDE由来のパスが設定されずにformatterがロードできないというものです。
外部のspringを止めて、IDEがspringを起動するようにすれば正しく参照されるという事ですね。

### 環境変数を変更する

最後につけているリンク先にて、binstabで`RUBYMINE_TESTUNIT_REPORTER`にパスを追加する方法やシンボリックリンクを貼って解決している方法がありますが、

Run > Debug Configurations の RSpecの設定のEnvironment
variablesで、RUBYLIBは追加することができるようなので、そちらに

[code]

    /Users/<username>/Library/Application Support/IntelliJIdea14/ruby/rb/testing/patch/common:/Users/<username>/Library/Application Support/IntelliJIdea14/ruby/rb/testing/patch/bdd:/Users/<username>/Library/Application Support/IntelliJIdea14/ruby/rb/testing/patch/testunit
    
[/code]

を足しておくのでも足りるかもしれません(`<username>`は適切な値に。/Userではなく/Applicationsにに存在することもある様子（バージョンによるのかもしれません）)。  
ここで設定したものが、実行時に既存設定に追加されるようです（上書きではない）。

（エラーが起こせなかったので、RUBYLIBで足りるかまでは確認できていません）

* * *

以下は日本語の対応例を公開してくれているサイトや投稿です。

  * <http://takeyuweb.hatenablog.com/entry/2014/10/15/172621>  
binstabでRUBYMINE_TESTUNIT_REPORTER環境変数に値を追加

  * <http://onohiroki.cycling.jp/2014-04-04-1> 見つからないと言われたモジュールディレクトリへのシンボリックリンクをrbenvのrubyのlibに作成

  * <http://qiita.com/sato1043/items/5e797a5358592389bae4> 外部で起動されたspringを止める

  * <http://qiita.com/shigeya/items/a50e77cc2eb0560ca957>  
binstabでRUBYMINE_HOMEを設定してIDEのパスを拾えるようにしている。


CC BY-SA 3.0
2014-12-23T23:50:02.283
2444
2014-12-25T16:32:36.517
2014-12-25T16:32:36.517
728
728
2438
answer


この件と同じではないでしょうか？

[spec すると `require': cannot load such file --
teamcity/spec/runner/formatter/teamcity/formatter](http://qiita.com/sato1043/items/5e797a5358592389bae4)

簡単に言うと、ターミナルから

[code]

    spring stop
    
[/code]

または

[code]

    bin/spring stop
    
[/code]

を実行してspringを停止させてから、もう一度IntelliJ IDEAからRSpecを実行するとちゃんと動くかもしれません。


CC BY-SA 3.0
2014-12-25T01:17:11.433
2518
2014-12-25T01:17:11.433
85
2438
answer