activerecord-sqlserver-adapter icon indicating copy to clipboard operation
activerecord-sqlserver-adapter copied to clipboard

Requiring the library fails for versions >= 7

Open stackmystack opened this issue 2 years ago • 0 comments

Issue

When you require activerecord-sqlserver-adapter as such:

require 'activerecord-sqlserver-adapter'

puts "fin"

You get a method_missing exception in ActiveRecord::Base (it can't find silence_warnings).

Expected behavior

It should load the adapter without exceptions

Actual behavior

Throws a method_missing exception.

How to reproduce

require 'bundler/inline'

gemfile(true) do
  source 'https://rubygems.org'
  gem 'activerecord', '>= 7'
  gem 'activerecord-sqlserver-adapter', '>= 7'
end

require 'activerecord'
require 'activerecord-sqlserver-adapter'

puts 'fin'

Details

  • Rails version: >= 7
  • SQL Server adapter version: >= 7

Stacktrace:

/Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-7.0.3/lib/active_record/dynamic_matchers.rb:22:in `method_missing': undefined method `silence_warnings' for ActiveRecord::Base:Class (NoMethodError)
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb:4:in `block in <top (required)>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-7.0.3/lib/active_support/lazy_load_hooks.rb:82:in `class_eval'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-7.0.3/lib/active_support/lazy_load_hooks.rb:82:in `block in execute_hook'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-7.0.3/lib/active_support/lazy_load_hooks.rb:72:in `with_execution_control'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-7.0.3/lib/active_support/lazy_load_hooks.rb:77:in `execute_hook'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-7.0.3/lib/active_support/lazy_load_hooks.rb:63:in `block in run_load_hooks'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-7.0.3/lib/active_support/lazy_load_hooks.rb:62:in `each'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-7.0.3/lib/active_support/lazy_load_hooks.rb:62:in `run_load_hooks'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-7.0.3/lib/active_record/base.rb:333:in `<module:ActiveRecord>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-7.0.3/lib/active_record/base.rb:15:in `<top (required)>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/active_record/tasks/sqlserver_database_tasks.rb:14:in `require'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/active_record/tasks/sqlserver_database_tasks.rb:14:in `<class:SQLServerDatabaseTasks>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/active_record/tasks/sqlserver_database_tasks.rb:10:in `<module:Tasks>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/active_record/tasks/sqlserver_database_tasks.rb:9:in `<module:ActiveRecord>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/active_record/tasks/sqlserver_database_tasks.rb:8:in `<top (required)>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/active_record/connection_adapters/sqlserver_adapter.rb:31:in `require'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/active_record/connection_adapters/sqlserver_adapter.rb:31:in `<top (required)>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/activerecord-sqlserver-adapter.rb:3:in `require'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-7.0.0.0/lib/activerecord-sqlserver-adapter.rb:3:in `<top (required)>'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/runtime.rb:66:in `require'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/runtime.rb:66:in `block (2 levels) in require'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/runtime.rb:61:in `each'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/runtime.rb:61:in `block in require'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/runtime.rb:50:in `each'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/runtime.rb:50:in `require'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/inline.rb:70:in `block in gemfile'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/settings.rb:115:in `temporary'
        from /Users/firas/.rbenv/versions/3.0.0/lib/ruby/3.0.0/bundler/inline.rb:54:in `gemfile'

It works fine with when doing rails < 7, e.g.:

require 'bundler/inline'

gemfile(true) do
  source 'https://rubygems.org'
  gem 'activerecord', '= 6'
  gem 'activerecord-sqlserver-adapter', '= 6'
end

require 'activerecord'
require 'activerecord-sqlserver-adapter'

puts 'fin'

stackmystack avatar Jul 12 '22 09:07 stackmystack