Comments (3)
The problem is with the Truncation class which loads the default connection from database.yml
rather than preferring the connection from the individual models. Ideally the problem is in the below code:
# lib/database_cleaner/active_record/truncation.rb
class Truncation
include ::DatabaseCleaner::ActiveRecord::Base
include ::DatabaseCleaner::Generic::Truncation
def clean
connection = connection_class.connection
....
After changing it to this.
# lib/database_cleaner/base.rb
def clean_with(*args)
opts = args.pop
strategy = create_strategy(*args)
set_strategy_db strategy, self.db
strategy.clean(opts)
strategy
end
# lib/database_cleaner/active_record/truncation.rb
def clean(opts = {})
connection = ActiveRecord::Base.establish_connection(opts).connection
.....
and changing the configuration into this it is working perfectly fine.
RSpec.configure do |config|
config.before(:suite) do
cleaner = DatabaseCleaner.add_cleaner(:active_record, SQL_SERVER)
cleaner.clean_with(:truncation, SQL_SERVER)
DatabaseCleaner.clean_with(:truncation, Rails.configuration.database_configuration[Rails.env])
DatabaseCleaner.strategy = :transaction
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
from database_cleaner-active_record.
@railsmith I understand the problem. Here is an alternative solution: https://gist.github.com/mgreenly/1109325
I'm not convinced that your solution is the best solution.
If you see the documentation, you can specify a single connection like this: https://github.com/DatabaseCleaner/database_cleaner#how-to-use-with-multiple-orms
I'd be more interested in adding a feature like this:
# for a single connection
DatabaseCleaner[:active_record, { :connection => :two }]
# for multiple connections (this is my proposed solution)
DatabaseCleaner[:active_record, { :connection => [:one, :two] }]
from database_cleaner-active_record.
I did not intend to provide the best solution otherwise I would have opened a pull request. I posted the above solution for someone who wants a quick fix by forking the repo and using that fork in an ongoing project. I will open a pull request sometime later.
Thank you for your suggestion.
from database_cleaner-active_record.
Related Issues (20)
- Transaction strategy configured with symbol(connection name) does not work HOT 1
- CI is not being executed against Rails 7.1 stable (and probably 7.1 compatibility is broken on main)
- Cleaning does not occur on subsequent specs when there are two databases and shared examples HOT 1
- Truncation failure with CockroachDB HOT 2
- Default CASCADE option when truncating with postgres is not intuitive HOT 4
- PostgreSQL truncation is broken on 2.0.1 HOT 7
- Where's the changelog? HOT 3
- Delete cascade HOT 1
- README.md -> invalid ruby syntax
- Cleaning fails with PG::UndefinedColumn: ERROR: column "increment_by" does not exist HOT 2
- Always exclude `pg_*` tables in PostgreSQL truncation
- Broken with Rails 7.1 HOT 2
- edge rails (future 7.1) no longer has ActiveRecord::SchemaMigration.table_name HOT 4
- v2.0.1 is throwing deprecation warning for using #tables instead of #data_sources HOT 3
- Stale connection in `DatabaseCleaner::ActiveRecord::Truncation#connection` HOT 1
- truncation and deletion doesn't call after_commit
- Issue with the upcoming Factory Bot Rails due to lacking of lazy load hooks HOT 4
- Unable to load application: LoadError: cannot load such file -- database_cleaner/active_record
- [FIX] Make more meaningful methods name
- Accidental replacement of main DB model connections in multi-database env
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from database_cleaner-active_record.