lib/hanami/generators/database_config.rb in hanami-1.0.0.beta2 vs lib/hanami/generators/database_config.rb in hanami-1.0.0.beta3

- old
+ new

@@ -1,75 +1,92 @@ require 'shellwords' module Hanami + # @api private module Generators + # @api private class DatabaseConfig + # @api private SUPPORTED_ENGINES = { 'mysql' => { type: :sql, mri: 'mysql2', jruby: 'jdbc-mysql' }, 'mysql2' => { type: :sql, mri: 'mysql2', jruby: 'jdbc-mysql' }, 'postgresql' => { type: :sql, mri: 'pg', jruby: 'jdbc-postgres' }, 'postgres' => { type: :sql, mri: 'pg', jruby: 'jdbc-postgres' }, 'sqlite' => { type: :sql, mri: 'sqlite3', jruby: 'jdbc-sqlite3' }, 'sqlite3' => { type: :sql, mri: 'sqlite3', jruby: 'jdbc-sqlite3' } }.freeze + # @api private DEFAULT_ENGINE = 'sqlite'.freeze - attr_reader :engine, :name + # @api private + attr_reader :engine + # @api private + attr_reader :name + # @api private def initialize(engine, name) @engine = engine @name = name unless SUPPORTED_ENGINES.key?(engine.to_s) # rubocop:disable Style/GuardClause warn %(`#{engine}' is not a valid database engine) exit(1) end end + # @api private def to_hash { gem: gem, uri: uri, type: type } end + # @api private def type SUPPORTED_ENGINES[engine][:type] end + # @api private def sql? type == :sql end + # @api private def sqlite? ['sqlite', 'sqlite3'].include?(engine) end private + # @api private def platform Hanami::Utils.jruby? ? :jruby : :mri end + # @api private def platform_prefix 'jdbc:'.freeze if Hanami::Utils.jruby? end + # @api private def uri { development: environment_uri(:development), test: environment_uri(:test) } end + # @api private def gem SUPPORTED_ENGINES[engine][platform] end + # @api private def base_uri case engine when 'mysql', 'mysql2' if Hanami::Utils.jruby? "mysql://localhost/#{ name }" @@ -81,9 +98,10 @@ when 'sqlite', 'sqlite3' "sqlite://db/#{ Shellwords.escape(name) }" end end + # @api private def environment_uri(environment) case engine when 'sqlite', 'sqlite3' "#{ platform_prefix }#{ base_uri }_#{ environment }.sqlite" else