33006


Rails内のファイルの何行目でSQLが発行されているかわかるgemを入れました。  
<https://github.com/ruckus/active-record-query-trace>

[code]

    group :development do
      gem 'active_record_query_trace'
    end
    
[/code]

RSpecなどのテストをするときはこのgemは動かないほうがテスト速度が早くなるかと推測し、上記のようにGemfileを記載しました。

さらに `config/initializers/active_record_query_trace.rbファイル` を作り

[code]

    # frozen_string_literal: true
    
    ActiveRecordQueryTrace.enabled = true
    
[/code]

と記載しました。

RSpecを動かすと

[code]

    % 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.
    
[/code]

というエラーがでました。  
注：エラーメッセージ中の該当ディレクトリ名は「プロジェクト名」と置換しています。  
（念のため記載しますが、development環境のRailsは問題なく動いています）

`group :development` と書いた以上は、テスト環境は `ActiveRecordQueryTrace`
に関することは知るすべもないはずで（だって何もインストールされていないのだから）、このようなエラーが出ることが不思議です。


CC BY-SA 3.0
2017-03-01T02:00:14.967
33001
2017-03-01T06:01:49.493
2017-03-01T05:41:59.627
9008
9008
question
ruby-on-rails rubygems
development環境のみにgemをインストールしたい。しかしうまくいかない。


すみません。自己解決しました。

`ActiveRecordQueryTrace.enabled = true`  
を書くファイルを間違ってました。

development環境のみで使用するので、下記ファイル内に記載するのが正解です。  
`config/environments/development.rb`


CC BY-SA 3.0
2017-03-01T06:01:49.493
33006
2017-03-01T06:01:49.493
9008
33001
answer