Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. ## database.yml
  2. development:
  3. database: dev
  4. test:
  5. database: test
  6. #...
  7. my_connection_development:
  8. database: my_connection_dev
  9. my_connection_test:
  10. database: my_connection_test
  11. #...
  12.  
  13. ## my_connection_base.rb
  14. class MyConnectionBase < ActiveRecord::Base
  15. establish_connection(ActiveRecord::Base.configurations["my_connection_#{RAILS_ENV}"])
  16. self.abstract_class = true
  17. end
  18.  
  19. ## my_model.rb
  20. class MyModel < MyConnectionBase
  21. end
  22.  
  23. ## my_another_model.rb
  24. class MyAnotherModel < MyConnectionBase
  25. end
  26.  
  27. ## test_case_patch.rb
  28. module ActiveSupport
  29. class TestCase
  30. def setup_fixtures
  31. return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank?
  32. if pre_loaded_fixtures && !use_transactional_fixtures
  33. raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures'
  34. end
  35. @fixture_cache = {}
  36. @@already_loaded_fixtures ||= {}
  37. # Load fixtures once and begin transaction.
  38. if run_in_transaction?
  39. if @@already_loaded_fixtures[self.class]
  40. @loaded_fixtures = @@already_loaded_fixtures[self.class]
  41. else
  42. load_fixtures
  43. @@already_loaded_fixtures[self.class] = @loaded_fixtures
  44. end
  45.  
  46. ActiveRecord::Base.connection.increment_open_transactions
  47. ActiveRecord::Base.connection.transaction_joinable = false
  48. ActiveRecord::Base.connection.begin_db_transaction
  49.  
  50. MyConnectionBase.connection.increment_open_transactions
  51. MyConnectionBase.connection.transaction_joinable = false
  52. MyConnectionBase.connection.begin_db_transaction
  53. # Load fixtures for every test.
  54. else
  55. Fixtures.reset_cache
  56. @@already_loaded_fixtures[self.class] = nil
  57. load_fixtures
  58. end
  59. # Instantiate fixtures for every test if requested.
  60. instantiate_fixtures if use_instantiated_fixtures
  61. end
  62.  
  63. def teardown_fixtures
  64. return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank?
  65. unless run_in_transaction?
  66. Fixtures.reset_cache
  67. end
  68. # Rollback changes if a transaction is active.
  69. if run_in_transaction? && MyConnectionBase.connection.open_transactions != 0
  70. MyConnectionBase.connection.rollback_db_transaction
  71. MyConnectionBase.connection.decrement_open_transactions
  72. end
  73. # Rollback changes if a transaction is active.
  74. if run_in_transaction? && ActiveRecord::Base.connection.open_transactions != 0
  75. ActiveRecord::Base.connection.rollback_db_transaction
  76. ActiveRecord::Base.connection.decrement_open_transactions
  77. end
  78. MyConnectionBase.clear_active_connections!
  79. ActiveRecord::Base.clear_active_connections!
  80. end
  81. end
  82. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement