class Hoboken::AddOns::Sequel
Database access via Sequel
gem.
Public Instance Methods
add_database_spec_helper()
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/hoboken/add_ons/sequel.rb, line 72 def add_database_spec_helper return unless rspec? insert_into_file('spec/spec_helper.rb', before: /ENV\['RACK_ENV'\] = 'test'/) do "ENV['DATABASE_URL'] = 'sqlite://db/test.db'\n" end snippet_rack = <<~CODE config.around(:example, rack: true) do |example| DB.transaction(rollback: :always) { example.run } end CODE snippet_database = <<~CODE config.around(:example, database: true) do |example| DB.transaction(rollback: :always) { example.run } end CODE location = /RSpec\.configure do \|config\|\n/ insert_into_file('spec/spec_helper.rb', after: location) do "#{indent(snippet_rack, 2)}\n#{indent(snippet_database, 2)}\n" end end
add_database_test_helper_class()
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/hoboken/add_ons/sequel.rb, line 41 def add_database_test_helper_class return if rspec? insert_into_file('test/test_helper.rb', before: /ENV\['RACK_ENV'\] = 'test'/) do "ENV['DATABASE_URL'] = 'sqlite://db/test.db'\n" end insert_into_file('test/test_helper.rb', after: %r{require 'test/unit'}) do "\nrequire 'sequel'" end append_file('test/test_helper.rb') do <<~CODE module Test module Database class TestCase < Test::Unit::TestCase def run(*args, &block) result = nil DB.transaction(rollback: :always) { result = super } result end end end end CODE end end
add_gems()
click to toggle source
# File lib/hoboken/add_ons/sequel.rb, line 8 def add_gems gem 'sequel', version: '5.43' gem 'sqlite3', version: '1.4', group: %i[development test] end
copy_rake_task()
click to toggle source
# File lib/hoboken/add_ons/sequel.rb, line 19 def copy_rake_task copy_file('hoboken/templates/sequel.rake', 'tasks/sequel.rake') end
reminders()
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/hoboken/add_ons/sequel.rb, line 98 def reminders say "\nGemfile updated... don't forget to 'bundle install'" say <<~TEXT #{' '} Notes: * The sqlite3 gem has been installed for dev and test environments only. You will need to specify a gem to use for production. * You will need to specify an environment variable 'DATABASE_URL' (either add it to .env or export it) TEXT end
require_db_config()
click to toggle source
# File lib/hoboken/add_ons/sequel.rb, line 27 def require_db_config location = classic? ? 'configure do' : 'module' insert_into_file('app.rb', before: location) do "require_relative 'config/db'\n\n" end end
setup_db_config()
click to toggle source
# File lib/hoboken/add_ons/sequel.rb, line 23 def setup_db_config template('hoboken/templates/db.rb.tt', 'config/db.rb') end
setup_directories()
click to toggle source
# File lib/hoboken/add_ons/sequel.rb, line 13 def setup_directories empty_directory('db/migrate') empty_directory('tasks') empty_directory('tmp') end
setup_puma_config()
click to toggle source
# File lib/hoboken/add_ons/sequel.rb, line 34 def setup_puma_config insert_into_file('config/puma.rb', after: 'before_fork do') do "\n DB.disconnect if defined?(DB)" end end