module SchemaDev::Rspec::Db
Public Instance Methods
configuration(db: nil)
click to toggle source
# File lib/schema_dev/rspec/db.rb, line 57 def configuration(db: nil) case db || infer_db when 'mysql' { 'adapter' => 'mysql', 'database' => database, 'host' => ENV['MYSQL_DB_HOST'], 'username' => ENV.fetch('MYSQL_DB_USER', 'schema_plus'), 'password' => ENV['MYSQL_DB_PASS'], 'encoding' => 'utf8', 'min_messages' => 'warning' } when 'mysql2' { 'adapter' => 'mysql2', 'database' => database, 'host' => ENV['MYSQL_DB_HOST'], 'username' => ENV.fetch('MYSQL_DB_USER', 'schema_plus'), 'password' => ENV['MYSQL_DB_PASS'], 'encoding' => 'utf8', 'min_messages' => 'warning' } when 'postgresql' { 'adapter' => 'postgresql', 'database' => database, 'host' => ENV['POSTGRESQL_DB_HOST'], 'username' => ENV['POSTGRESQL_DB_USER'], 'password' => ENV['POSTGRESQL_DB_PASS'], 'min_messages' => 'warning' } when 'sqlite3' { 'adapter' => 'sqlite3', 'database' => tmproot.join("#{database}.sqlite3").to_s } else raise "Unknown db adapter #{db.inspect}" end.compact end
connect()
click to toggle source
# File lib/schema_dev/rspec/db.rb, line 102 def connect ActiveRecord::Base.configurations = { 'schema_dev' => configuration } ActiveRecord::Base.establish_connection :schema_dev case infer_db when 'sqlite3' ActiveRecord::Base.connection.execute 'PRAGMA synchronous = OFF' end end
database()
click to toggle source
# File lib/schema_dev/rspec/db.rb, line 52 def database @database ||= 'schema_plus_test' # @database ||= (Dir["*.gemspec"].first || "schema_dev_test").sub(/\.gemspec$/, '') + "_test" end
infer_db()
click to toggle source
# File lib/schema_dev/rspec/db.rb, line 98 def infer_db @infer_db ||= GemfileSelector.infer_db end
logroot()
click to toggle source
# File lib/schema_dev/rspec/db.rb, line 48 def logroot @logroot ||= Pathname.new('log').tap(&:mkpath) end
set_logger()
click to toggle source
# File lib/schema_dev/rspec/db.rb, line 111 def set_logger ruby = "#{RUBY_ENGINE}#{RUBY_VERSION}" activerecord = "activerecord#{ActiveRecord.version}" ActiveRecord::Base.logger = Logger.new(logroot.join("#{ruby}-#{activerecord}-#{infer_db}.log").open('w')) end
setup()
click to toggle source
# File lib/schema_dev/rspec/db.rb, line 12 def setup set_logger connect RSpec.configure do |config| config.include Helpers config.filter_run_excluding postgresql: -> (v) { if Helpers.postgresql? case v when String version = ActiveRecord::Base.connection.select_value("SHOW server_version").match(/(\d+\.\d+)/)[1] postgresql_version = Gem::Version.new(version) test = Gem::Requirement.new(v) !test.satisfied_by?(postgresql_version) else v == :skip end else v == :only end } config.filter_run_excluding mysql: :only unless Helpers.mysql? config.filter_run_excluding mysql: :skip if Helpers.mysql? config.filter_run_excluding sqlite3: :only unless Helpers.sqlite3? config.filter_run_excluding sqlite3: :skip if Helpers.sqlite3? config.filter_run_excluding rails: -> (v) { rails_version = Gem::Version.new(ActiveRecord::VERSION::STRING) test = Gem::Requirement.new(v) !test.satisfied_by?(rails_version) } end end
tmproot()
click to toggle source
# File lib/schema_dev/rspec/db.rb, line 44 def tmproot @tmproot ||= Pathname.new('tmp').tap(&:mkpath) end