rails-default-database 1.0.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0f467540db0d824cee1ed76d28d6dcfcb5ba2d4
4
- data.tar.gz: 50d7f21eca4e00fd7d77e2f62189aa50ed7bee6c
3
+ metadata.gz: f90d52092727be87d95e3bc549871a60f3d1058e
4
+ data.tar.gz: 9253ba1b2ecfa937e25c9292a6a1285173080c1c
5
5
  SHA512:
6
- metadata.gz: 8e4fb5c34e4688c66c68f36cd6423454197b51687e776695422ecc3c7715bac16a8f9152ea0a1713d429f4f658c95d89045d0beda8dcbaafe7acdb8e7c3a6daa
7
- data.tar.gz: bdc303cbc1b132f38a5a85430a01ea55e4629d7d092b2d7769afe10b2f4b8665c6c6a83af1ec2da8da37bc476f427f14d21c0efd914fb812b9845888659befe0
6
+ metadata.gz: 56c33a78428a9049739153dc5e54116be58d33cf079d237fa2b9005f6df6ff51d0a077fbdc92d80a2004d80edf2a8e2bb76cd9f4a0624286521f96bebf4cab54
7
+ data.tar.gz: 9fdd61a51444933c5a76f63a6073658124b05d4be949847495edfd159f79ab60ff15b6c56a1e9bebf6945554ab369ca7e616ffc9772fcf3cd0efa0c2e6d1dd1e
data/README.markdown CHANGED
@@ -11,6 +11,11 @@ You can still override the defaults by creating `config/database.yml`.
11
11
  Use `rake db:config` to create `config/database.yml` with the defaults
12
12
  that would have been assumed.
13
13
 
14
+ The default database name is based on the name of the root directory of your
15
+ application. This can be overridden by setting
16
+ `config.database_name = 'foo_%s'` in `config/application.rb`, with `%s` being
17
+ a placeholder for the current environment name.
18
+
14
19
  As in standard Rails, the `DATABASE_URL` environment variable takes
15
20
  precedence when defined. However, in the test environment, Rails Default
16
21
  Database will append `_test` to the database name (after stripping an optional
@@ -2,6 +2,6 @@ desc 'Write out config/database.yml from rails-default-database'
2
2
  task 'db:config' do
3
3
  contents = Rails.configuration.database_configuration.to_yaml
4
4
  File.open(Rails.root.join('config/database.yml'), 'w') do |f|
5
- f.puts contents.sub(/^---\n/, '')
5
+ f.puts contents.sub(/^---\n/, '').gsub(/%i/, '')
6
6
  end
7
7
  end
@@ -1,5 +1,12 @@
1
1
  Rails::Application::Configuration.class_eval do
2
2
 
3
+ def environments_for_database_configuration
4
+ ['development', 'test', 'production'] |
5
+ root.join('config', 'environments').children.map do |e|
6
+ e.basename('.rb').to_s if e.extname == '.rb'
7
+ end.compact.sort
8
+ end
9
+
3
10
  def database_configuration_with_default
4
11
  config =
5
12
  begin
@@ -8,22 +15,35 @@ Rails::Application::Configuration.class_eval do
8
15
  end || {}
9
16
 
10
17
  if url = ENV['DATABASE_URL'].presence
11
- config['test'] ||= {}
12
- config['test']['url'] ||= ENV['TEST_DATABASE_URL'] ||
13
- url.sub(/(?:_development|_test|_production)?(?=\?|$)/, "_test")
14
- config[if Rails.env.test? then 'development' else Rails.env end] ||= {}
15
- config.keys.each do |k|
16
- config[k]['url'] ||= url
18
+ (environments_for_database_configuration | config.keys).each do |k|
19
+ config[k] = {'url' => url.gsub('%s', k)}
20
+ if k == 'test'
21
+ config[k]['url'] =
22
+ config[k]['url'].sub(/(?:_(?:#{environments_for_database_configuration.join('|')})(?:\d*|%i))?(?=\?|$)/, "_test")
23
+ end
17
24
  end
18
25
  config
19
26
  else
20
27
  default_database_configuration.merge(config)
28
+ end.tap do |c|
29
+ if ENV['TEST_DATABASE_URL'].present?
30
+ c['test'] = {'url' => ENV['TEST_DATABASE_URL']}
31
+ end
32
+ %w(url database).each do |key|
33
+ if value = c['test'] && c['test'][key]
34
+ c['test'][key] = value.sub(/%i/, ENV['TEST_ENV_NUMBER'].to_s)
35
+ end
36
+ end
21
37
  end
22
38
  end
23
39
 
40
+ attr_writer :database_name
41
+ def database_name
42
+ @database_name || File.basename(root).gsub(/[^[:alnum:]]+/, '_') + '_%s'
43
+ end
44
+
24
45
  def default_database_configuration
25
- name = File.basename(root).gsub(/[^[:alnum:]]+/, '_')
26
- driver = %w(pg mysql mysql2 sqlite3).detect do |a|
46
+ driver = %w(pg mysql2 mysql sqlite3).detect do |a|
27
47
  begin
28
48
  require a
29
49
  true
@@ -47,11 +67,14 @@ Rails::Application::Configuration.class_eval do
47
67
  else
48
68
  {'adapter' => driver}
49
69
  end
50
- defaults['database'] ||= "#{name}_%s"
70
+ defaults['database'] ||= database_name
51
71
 
52
- %w(development test production).inject({}) do |h, env|
72
+ environments_for_database_configuration.inject({}) do |h, env|
73
+ database = defaults['database']
74
+ database += '_%s' if env == 'test' && database !~ /%s/
75
+ database = database.gsub('%s', "#{env}#{'%i' if env == 'test'}")
53
76
  h[env] = defaults.merge(
54
- 'database' => defaults['database'].gsub('%s', env)
77
+ 'database' => database
55
78
  )
56
79
  h
57
80
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-default-database
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Pope
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-25 00:00:00.000000000 Z
11
+ date: 2017-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties