development環境のみにgemをインストールしたい。しかしうまくいかない。
Rails内のファイルの何行目でSQLが発行されているかわかるgemを入れました。
https://github.com/ruckus/active-record-query-trace
group :development do
gem 'active_record_query_trace'
end
RSpecなどのテストをするときはこのgemは動かないほうがテスト速度が早くなるかと推測し、上記のようにGemfileを記載しました。
さらに config/initializers/active_record_query_trace.rbファイル
を作り
# frozen_string_literal: true
ActiveRecordQueryTrace.enabled = true
と記載しました。
RSpecを動かすと
% bundle exec rspec
DEPRECATION WARNING: ActiveRecord::Base.raise_in_transactional_callbacks= is deprecated, has no effect and will be removed without replacement. (called from <top (required)> at プロジェクト名/config/environment.rb:7)
bundler: failed to load command: rspec (プロジェクト名/vendor/bundle/ruby/2.3.0/bin/rspec)
NameError: uninitialized constant ActiveRecordQueryTrace
プロジェクト名/config/initializers/active_record_query_trace.rb:3:in `<top (required)>'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/engine.rb:648:in `block in load_config_initializer'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/activesupport-5.0.1/lib/active_support/notifications.rb:166:in `instrument'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/engine.rb:647:in `load_config_initializer'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/engine.rb:611:in `each'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/engine.rb:611:in `block in <class:Engine>'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `instance_exec'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `run'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/initializable.rb:44:in `each'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/initializable.rb:44:in `tsort_each_child'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:415:in `call'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:415:in `each_strongly_connected_component_from'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:347:in `each'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:347:in `call'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
/Users/shingo/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/initializable.rb:54:in `run_initializers'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/railties-5.0.1/lib/rails/application.rb:352:in `initialize!'
プロジェクト名/config/environment.rb:7:in `<top (required)>'
プロジェクト名/spec/rails_helper.rb:5:in `require'
プロジェクト名/spec/rails_helper.rb:5:in `<top (required)>'
プロジェクト名/spec/controllers/advertisements_controller_spec.rb:3:in `require'
プロジェクト名/spec/controllers/advertisements_controller_spec.rb:3:in `<top (required)>'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `load'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `block in load_spec_files'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `each'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `load_spec_files'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:100:in `setup'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:86:in `run'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:71:in `run'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:45:in `invoke'
プロジェクト名/vendor/bundle/ruby/2.3.0/gems/rspec-core-3.5.4/exe/rspec:4:in `<top (required)>'
プロジェクト名/vendor/bundle/ruby/2.3.0/bin/rspec:22:in `load'
プロジェクト名/vendor/bundle/ruby/2.3.0/bin/rspec:22:in `<top (required)>'
Coverage report generated for RSpec to プロジェクト名/coverage. 19 / 45 LOC (42.22%) covered.
というエラーがでました。
注:エラーメッセージ中の該当ディレクトリ名は「プロジェクト名」と置換しています。
(念のため記載しますが、development環境のRailsは問題なく動いています)
group :development
と書いた以上は、テスト環境は ActiveRecordQueryTrace
に関することは知るすべもないはずで(だって何もインストールされていないのだから)、このようなエラーが出ることが不思議です。