Skip to content

Commit

Permalink
Enable support for Rails 8 (#24)
Browse files Browse the repository at this point in the history
Alternate take than #23 -
instead of being picky about Rails versions, assume the interfaces used
are stable and we don't need to make another PR one year from now just
to allow Rails 9.
  • Loading branch information
bdewater-thatch authored Jan 24, 2025
1 parent 36dc3cf commit e100b2d
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 13 deletions.
4 changes: 2 additions & 2 deletions pecorino.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ Gem::Specification.new do |spec|
spec.require_paths = ["lib"]

# Uncomment to register a new dependency of your gem
spec.add_dependency "activerecord", "~> 7"
spec.add_dependency "activerecord", ">= 7"
spec.add_development_dependency "pg"
spec.add_development_dependency "sqlite3"
spec.add_development_dependency "activesupport", "~> 7.0"
spec.add_development_dependency "activesupport", ">= 7"
spec.add_development_dependency "rake", "~> 13.0"
spec.add_development_dependency "minitest", "~> 5.0"
spec.add_development_dependency "standard"
Expand Down
17 changes: 13 additions & 4 deletions test/adapters/postgres_adapter_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,22 @@ class PostgresAdapterTest < ActiveSupport::TestCase
setup { create_postgres_database_if_none }
teardown { truncate_test_tables }

def self.establish_connection(**options)
ActiveRecord::Base.establish_connection(
adapter: "postgresql",
connect_timeout: 2,
**options
)
end

def create_adapter
Pecorino::Adapters::PostgresAdapter.new(ActiveRecord::Base)
end

SEED_DB_NAME = -> { "pecorino_tests_%s" % Random.new(Minitest.seed).hex(4) }

def create_postgres_database_if_none
ActiveRecord::Base.establish_connection(adapter: "postgresql", encoding: "unicode", database: SEED_DB_NAME.call)
self.class.establish_connection(encoding: "unicode", database: SEED_DB_NAME.call)
ActiveRecord::Base.connection.execute("SELECT 1 FROM pecorino_leaky_buckets")
rescue ActiveRecord::NoDatabaseError, ActiveRecord::ConnectionNotEstablished
create_postgres_database
Expand All @@ -29,10 +37,10 @@ def create_postgres_database_if_none

def create_postgres_database
ActiveRecord::Migration.verbose = false
ActiveRecord::Base.establish_connection(adapter: "postgresql", database: "postgres")
self.class.establish_connection(database: "postgres")
ActiveRecord::Base.connection.create_database(SEED_DB_NAME.call, charset: :unicode)
ActiveRecord::Base.connection.close
ActiveRecord::Base.establish_connection(adapter: "postgresql", encoding: "unicode", database: SEED_DB_NAME.call)
self.class.establish_connection(encoding: "unicode", database: SEED_DB_NAME.call)
end

def truncate_test_tables
Expand All @@ -50,11 +58,12 @@ def test_create_tables
retained_adapter.create_tables(via_definer)
end
end
assert true
end

Minitest.after_run do
ActiveRecord::Base.connection.close
ActiveRecord::Base.establish_connection(adapter: "postgresql", database: "postgres")
establish_connection(database: "postgres")
ActiveRecord::Base.connection.drop_database(SEED_DB_NAME.call)
end
end
8 changes: 6 additions & 2 deletions test/adapters/redis_adapter_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,21 @@ class RedisAdapterTest < ActiveSupport::TestCase
teardown { delete_created_keys }

def create_adapter
Pecorino::Adapters::RedisAdapter.new(Redis.new, key_prefix: key_prefix)
Pecorino::Adapters::RedisAdapter.new(new_redis, key_prefix: key_prefix)
end

def key_prefix
"pecorino-test" + Random.new(Minitest.seed).bytes(4)
end

def delete_created_keys
r = Redis.new
r = new_redis
r.del(r.keys(key_prefix + "*"))
end

def new_redis
Redis.new
end

undef :test_create_tables
end
11 changes: 6 additions & 5 deletions test/adapters/sqlite_adapter_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class SqliteAdapterTest < ActiveSupport::TestCase

def create_sqlite_db
ActiveRecord::Migration.verbose = false
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: test_db_filename)
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: db_filename)

ActiveRecord::Schema.define(version: 1) do |via_definer|
Pecorino.create_tables(via_definer)
Expand All @@ -18,12 +18,12 @@ def create_sqlite_db

def drop_sqlite_db
ActiveRecord::Base.connection.close
FileUtils.rm_rf(test_db_filename)
FileUtils.rm_rf(test_db_filename + "-wal")
FileUtils.rm_rf(test_db_filename + "-shm")
FileUtils.rm_rf(db_filename)
FileUtils.rm_rf(db_filename + "-wal")
FileUtils.rm_rf(db_filename + "-shm")
end

def test_db_filename
def db_filename
"pecorino_tests_%s.sqlite3" % Random.new(Minitest.seed).hex(4)
end

Expand All @@ -41,5 +41,6 @@ def test_create_tables
retained_adapter.create_tables(via_definer)
end
end
assert true
end
end

0 comments on commit e100b2d

Please sign in to comment.