Skip to content

Commit

Permalink
Merge pull request lokka#230 from morygonzalez/configurable-database-…
Browse files Browse the repository at this point in the history
…encoding

Enable database encoding configuration
  • Loading branch information
komagata committed Oct 4, 2017
2 parents c50a38f + 07a813a commit 816f966
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 2 deletions.
24 changes: 24 additions & 0 deletions database.default.yml
@@ -1,3 +1,5 @@
# Configurable by DSN or YAML Hash
#
# DSN (Data Source Name) examples
#
# sqlite3:
Expand All @@ -8,8 +10,30 @@
# postgres://user:pass@host/database
# heroku:
# <%= ENV['DATABASE_URL'] %>
#
# Hash example
#
# production:
# adapter: mysql
# database: database
# username: user
# password: pass
# host: host
# encoding: UTF-8-MB4
#
# which is equivalent to
#
# production:
# dsn: mysql://user:pass@host/database
#
production:
dsn: <%= ENV['DATABASE_URL'] %>
# adapter: <%= ENV['DATABASE_ADAPTER'] %>
# database: <%= ENV['DATABASE_NAME'] %>
# username: <%= ENV['DATABASE_USER'] %>
# password: <%= ENV['DATABASE_PASSWORD'] %>
# host: <%= ENV['DATABASE_HOST'] %>
# encoding: UTF-8-MB4
development:
dsn: sqlite3://<%= root %>/db/development.sqlite3
test:
Expand Down
14 changes: 13 additions & 1 deletion lib/lokka.rb
Expand Up @@ -27,8 +27,20 @@ def admin_theme_dir
#
# @return [String] DSN (Data Source Name) is configuration for database.
def dsn
database_config['dsn']
end

##
# Data Source Hash
#
# @return [Hash] DSH (Data Source Hash) is configuration for database.
def dsh
database_config.dup.delete_if {|key, _| key == 'dsn' }
end

def database_config
filename = File.exist?("#{Lokka.root}/database.yml") ? 'database.yml' : 'database.default.yml'
YAML.load(ERB.new(File.read("#{Lokka.root}/#{filename}")).result(binding))[self.env]['dsn']
YAML.load(ERB.new(File.read("#{Lokka.root}/#{filename}")).result(binding))[self.env]
end

##
Expand Down
7 changes: 6 additions & 1 deletion lib/lokka/database.rb
Expand Up @@ -4,7 +4,12 @@ class Database

def connect
DataMapper.finalize
DataMapper.setup(:default, Lokka.dsn)
config = if Lokka.dsn.present?
Lokka.dsn
else
Lokka.dsh
end
DataMapper.setup(:default, config)
self
end

Expand Down

0 comments on commit 816f966

Please sign in to comment.