rails-default-database 1.0.7 → 1.1.2

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
- SHA1:
3
- metadata.gz: 7075c5a3d27a37d456dfeff951e4edc47f4ea9cd
4
- data.tar.gz: 6c37e55732b34440e7993db87f215fcb3708af22
2
+ SHA256:
3
+ metadata.gz: 5131765f88d06c672a6f77edebfc8832036fa0ee1100b4e4f89bbd2a6a9bbfe5
4
+ data.tar.gz: 1148dea899f6d075a0ad14f655b6d30b7e32cfc19705752fb43bea92433143b3
5
5
  SHA512:
6
- metadata.gz: 1f9cf2c162b1c60c5d9b3426ae2bdd28e5b50ffd8b4837e05be6205149638e9d9a536163a62cac61b9419ac78015710c6ebd83a6a2958f9303098b8b7649e97c
7
- data.tar.gz: 9fc50a30d34d8aea25865e1435450db59f2e1ab46bbdd45e0a2c674eb93605bf9234ee852686f141d344d5ecd398c4b9b99b8f1807a60344ca2f411c9b8881d5
6
+ metadata.gz: 64d4d192d3f0d81de6874fab97ab41455bca27fb7b443e4c91b19b63d0a911e9b08d88c3e68ef4099a2fd585c9ecf615278893cc2be18128e093ebd895d1e773
7
+ data.tar.gz: a0f594baf1fc95e3ac2c43da3ddaa9b55948282198db4cb49d9838901b84c6890f8dab4ddf9f2034ce47fd5cccd8b22c91c5e855e28f6f9174c84a90f2e5d762
data/README.markdown CHANGED
@@ -11,7 +11,18 @@ 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
- License
15
- -------
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
+
19
+ As in standard Rails, the `DATABASE_URL` environment variable takes
20
+ precedence when defined. However, in the test environment, Rails Default
21
+ Database will append `_test` to the database name (after stripping an optional
22
+ existing environment suffix), ensuring the development (or production!)
23
+ database is never clobbered. This enables storing your database configuration
24
+ in [`.env`](https://github.com/bkeepers/dotenv), if you so choose.
25
+
26
+ ## License
16
27
 
17
28
  Copyright (c) Tim Pope. MIT License.
@@ -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,18 +1,50 @@
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
- config_file =
11
+ config =
5
12
  begin
6
13
  database_configuration_without_default
7
14
  rescue Errno::ENOENT, RuntimeError
8
15
  end || {}
9
16
 
10
- default_database_configuration.merge(config_file)
17
+ if url = ENV['DATABASE_URL'].presence
18
+ (environments_for_database_configuration | config.keys).each do |k|
19
+ config[k] = {'url' => url.gsub('%s', k)}
20
+ if k == 'test' && ENV['TEST_DATABASE_URL'] != 'default' && ENV['CI'] != 'true'
21
+ config[k]['url'] =
22
+ config[k]['url'].sub(/(?:_(?:#{environments_for_database_configuration.join('|')})(?:\d*|%i))?(?=\?|$)/, "_test")
23
+ end
24
+ end
25
+ config
26
+ else
27
+ default_database_configuration.merge(config)
28
+ end.tap do |c|
29
+ url = ENV['TEST_DATABASE_URL'].presence
30
+ if url && url != 'default'
31
+ c['test'] = {'url' => url}
32
+ end
33
+ %w(url database).each do |key|
34
+ if value = c['test'] && c['test'][key]
35
+ c['test'][key] = value.sub(/%i/, ENV['TEST_ENV_NUMBER'].to_s)
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ attr_writer :database_name
42
+ def database_name
43
+ @database_name || File.basename(root).gsub(/[^[:alnum:]]+/, '_') + '_%s'
11
44
  end
12
45
 
13
46
  def default_database_configuration
14
- name = File.basename(root)
15
- driver = %w(pg mysql mysql2 sqlite3).detect do |a|
47
+ driver = %w(pg mysql2 mysql sqlite3).detect do |a|
16
48
  begin
17
49
  require a
18
50
  true
@@ -36,17 +68,23 @@ Rails::Application::Configuration.class_eval do
36
68
  else
37
69
  {'adapter' => driver}
38
70
  end
39
- defaults['database'] ||= "#{name}_%s"
71
+ defaults['database'] ||= database_name
40
72
 
41
- %w(development test production).inject({}) do |h, env|
73
+ environments_for_database_configuration.inject({}) do |h, env|
74
+ database = defaults['database']
75
+ database += '_%s' if env == 'test' && database !~ /%s/
76
+ database = database.gsub('%s', "#{env}#{'%i' if env == 'test'}")
42
77
  h[env] = defaults.merge(
43
- 'database' => defaults['database'].gsub('%s', env)
78
+ 'database' => database
44
79
  )
45
80
  h
46
81
  end
47
82
  end
48
83
 
49
- alias_method_chain :database_configuration, :default
84
+ unless method_defined?(:database_configuration_without_default)
85
+ alias database_configuration_without_default database_configuration
86
+ alias database_configuration database_configuration_with_default
87
+ end
50
88
  end
51
89
 
52
90
  class RailsDefaultDatabaseRailtie < Rails::Railtie
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.7
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Pope
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-20 00:00:00.000000000 Z
11
+ date: 2021-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -53,8 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  requirements: []
56
- rubyforge_project:
57
- rubygems_version: 2.2.2
56
+ rubygems_version: 3.1.4
58
57
  signing_key:
59
58
  specification_version: 4
60
59
  summary: Make database.yml optional in Rails