acts-as-taggable-on icon indicating copy to clipboard operation
acts-as-taggable-on copied to clipboard

ActsAsTaggableOn.force_binary_collation breaks db:create

Open dvmonroe opened this issue 6 years ago • 3 comments

Versions ActsAsTaggableOn: 6.0 Rails: 5.2 Ruby: 2.4.2

Steps to reproduce

$ rails new Foobar -d mysql
$ cd Foobar && echo "ActsAsTaggableOn.force_binary_collation = true" > config/initializers/acts_as_taggable_on.rb && echo 'gem "acts-as-taggable-on"' >> Gemfile
$ bundle
$ rails db:create

Expected Behavior Able to successfully run rails db:create.

Actual Behavior Utils.connection is blindly expecting an AR connection leaving the end user no choice but to wrap the initializer in a conditional that rescues from ActiveRecord::NoDatabaseError.

rails aborted!
ActiveRecord::NoDatabaseError: Unknown database 'foobar_development'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/mysql2_adapter.rb:26:in `rescue in mysql2_connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/mysql2_adapter.rb:13:in `mysql2_connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:809:in `new_connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in `checkout_new_connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:832:in `try_to_checkout_new_connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:793:in `acquire_connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:521:in `checkout'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:380:in `connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:1008:in `retrieve_connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_handling.rb:118:in `retrieve_connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/activerecord-5.2.0/lib/active_record/connection_handling.rb:90:in `connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/acts-as-taggable-on-6.0.0/lib/acts_as_taggable_on/utils.rb:8:in `connection'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/acts-as-taggable-on-6.0.0/lib/acts_as_taggable_on/utils.rb:16:in `using_mysql?'
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/acts-as-taggable-on-6.0.0/lib/acts-as-taggable-on.rb:94:in `force_binary_collation='
/Users/plu/.rbenv/versions/2.4.2/gemsets/foobar/gems/acts-as-taggable-on-6.0.0/lib/acts-as-taggable-on.rb:50:in `method_missing'
/Users/plu/Projects/work/foobar/config/initializers/acts_as_taggable.rb:24:in `<top (required)>

dvmonroe avatar Jun 28 '18 04:06 dvmonroe

wasted so much of my time. any solution to this ?

saluminati avatar Jan 14 '19 21:01 saluminati

Provisionally, I've solved it this way in config/initializers/acts_as_taggable_on.rb.

begin
  ActsAsTaggableOn.force_binary_collation = true
rescue ActiveRecord::NoDatabaseError => err
  Rails.logger.error err
end

I hope that this issue will be fixed.

shuuuuun avatar Apr 10 '20 00:04 shuuuuun

Faced this issue today.

@shuuuuun workaround solved it for me.

tbuyle avatar Jan 06 '22 12:01 tbuyle