activerecord-sqlserver-adapter
activerecord-sqlserver-adapter copied to clipboard
Requiring the library fails for versions >= 7
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'