Skip to content

Commit ffebdca

Browse files
committed
Move sqlite database initialization in tests
sqlite3 gem in 2.1.0 has introduced fork safety mechanism that discards open writable database connections carried across a fork() which is used by mutant gem https://github.com/sparklemotion/sqlite3-ruby/blob/main/CHANGELOG.md#fork-safety-improvements
1 parent 190a683 commit ffebdca

File tree

2 files changed

+34
-27
lines changed

2 files changed

+34
-27
lines changed

contrib/ruby_event_store-rom/spec/spec_helper.rb

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,10 @@
1111
module RubyEventStore
1212
module ROM
1313
class SpecHelper
14-
attr_reader :rom_container
14+
attr_reader :rom_container, :database_uri
1515

1616
def initialize(database_uri = ENV["DATABASE_URL"])
17-
config =
18-
::ROM::Configuration.new(
19-
:sql,
20-
database_uri,
21-
max_connections: database_uri =~ /sqlite/ ? 1 : 5,
22-
preconnect: :concurrently,
23-
fractional_seconds: true
24-
)
25-
config.default.use_logger(Logger.new(STDOUT)) if ENV.has_key?("VERBOSE")
26-
config.default.run_migrations
27-
28-
@rom_container = ROM.setup(config)
17+
@database_uri = database_uri
2918
end
3019

3120
def serializer
@@ -83,6 +72,19 @@ def connection_pool_size
8372
protected
8473

8574
def gateway
75+
@config ||=
76+
::ROM::Configuration.new(
77+
:sql,
78+
database_uri,
79+
max_connections: database_uri =~ /sqlite/ ? 1 : 5,
80+
preconnect: :concurrently,
81+
fractional_seconds: true
82+
).tap do |config|
83+
config.default.use_logger(Logger.new(STDOUT)) if ENV.has_key?("VERBOSE")
84+
config.default.run_migrations
85+
end
86+
@rom_container ||= ROM.setup(@config)
87+
8688
rom_container.gateways.fetch(:default)
8789
end
8890

contrib/ruby_event_store-sequel/spec/spec_helper.rb

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,10 @@
1111
module RubyEventStore
1212
module Sequel
1313
class SpecHelper
14-
attr_reader :sequel
14+
attr_reader :database_uri
1515

1616
def initialize(database_uri = ENV["DATABASE_URL"])
17-
@sequel =
18-
::Sequel.connect(
19-
database_uri,
20-
fractional_seconds: true,
21-
preconnect: :concurrently,
22-
max_connections: database_uri.include?("sqlite") ? 1 : 5
23-
)
24-
@sequel.loggers << Logger.new(STDOUT) if ENV.has_key?("VERBOSE")
17+
@database_uri = database_uri
2518
end
2619

2720
def serializer
@@ -73,20 +66,32 @@ def has_connection_pooling?
7366
end
7467

7568
def connection_pool_size
76-
@sequel.pool.max_size
69+
sequel.pool.max_size
70+
end
71+
72+
def sequel
73+
@sequel ||=
74+
::Sequel.connect(
75+
database_uri,
76+
fractional_seconds: true,
77+
preconnect: :concurrently,
78+
max_connections: database_uri.include?("sqlite") ? 1 : 5
79+
).tap do |sequel|
80+
sequel.loggers << Logger.new(STDOUT) if ENV.has_key?("VERBOSE")
81+
end
7782
end
7883

7984
protected
8085

8186
def load_schema
8287
::Sequel.extension :migration
83-
::Sequel::Migrator.run(@sequel, "lib/ruby_event_store/generators/templates/#{template_dir}", version: 0)
88+
::Sequel::Migrator.run(sequel, "lib/ruby_event_store/generators/templates/#{template_dir}", version: 0)
8489
end
8590

8691
def drop_schema
87-
@sequel.drop_table?(:event_store_events)
88-
@sequel.drop_table?(:event_store_events_in_streams)
89-
@sequel.drop_table?(:schema_info)
92+
sequel.drop_table?(:event_store_events)
93+
sequel.drop_table?(:event_store_events_in_streams)
94+
sequel.drop_table?(:schema_info)
9095
end
9196

9297
private

0 commit comments

Comments
 (0)