Skip to content

Instantly share code, notes, and snippets.

@lazaronixon
Last active May 28, 2024 01:50
Show Gist options
  • Save lazaronixon/1f023a19684fa63a286835f1b408f59d to your computer and use it in GitHub Desktop.
Save lazaronixon/1f023a19684fa63a286835f1b408f59d to your computer and use it in GitHub Desktop.
config/initializers/sqlite3.rb
# config/database.yml
# SQLite. Versions 3.8.0 and up are supported.
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem "sqlite3"
#
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 10 } %>
retries: 100
default_transaction_mode: immediate
development:
primary:
<<: *default
database: storage/db/development.sqlite3
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
primary:
<<: *default
database: storage/db/test.sqlite3
performance:
primary:
<<: *default
database: storage/db/performance.sqlite3
production:
primary:
<<: *default
database: storage/db/production.sqlite3
# config/initializers/sqlite3.rb
module SQLite3Configuration
private
def configure_connection
super
if @config[:retries]
retries = self.class.type_cast_config_to_integer(@config[:retries])
raw_connection.busy_handler do |count|
(count <= retries).tap { |result| sleep count * 0.001 if result }
end
end
end
end
ActiveSupport.on_load :active_record do
ActiveRecord::ConnectionAdapters::SQLite3Adapter.prepend SQLite3Configuration
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment