bard-rake 0.16.1 → 0.17.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
- SHA1:
3
- metadata.gz: '013248985335f720029ac9533d99d4ca8656dba9'
4
- data.tar.gz: 7d9d4065d2f69a1b59640617f61912d7c98d41b2
2
+ SHA256:
3
+ metadata.gz: 6ff9efd86b5af9fe0cd76d0040ff9c8c1ee9f4ac44d6f734d2088208ecb540e8
4
+ data.tar.gz: 3aa80505be2130df0af16819812d7c7585a7437732e0b9676ced2d1a993f40f6
5
5
  SHA512:
6
- metadata.gz: 7e45654df1e8d7c583772d800780a344faf918d5673292c107346c59ee6016b9b99eb4bffa223748c5d555eb50e9f3c23f86392e510fbcfc3bd64b5dbc9dd44c
7
- data.tar.gz: ee347ce758d635e22d462638ae26cb4dec2320132115182627057f11b5e948a1e483ae0a3bc0eaa67bb0a626ea711effb0caf1101de00f484aab06b7f246ae9c
6
+ metadata.gz: 25ce15d5a69099f141387adba4cedb6375842eb9b8c3a798d1e6d1fe1a1c777fcdf4f51d029bb18577300f68b7ff697cb367f15ca5c69f41701ed087f11168ce
7
+ data.tar.gz: 31d9e860c78f90e836787a386eff659c56ab2a098cc5fc63d779edf15094e4a3abd14b60f2b906bac1f63b8595110efa2030ef76b980d78c0316cd0d4340ccf8
@@ -1,59 +1,87 @@
1
1
  if defined?(ActiveRecord)
2
2
  namespace :db do
3
3
  namespace :create do
4
- task :all => [:load_config] do
5
- invoke_task_if_exists :rails_env
6
- run_in_all_environments do |config|
7
- ActiveRecord::Base.establish_connection(config)
8
- ActiveRecord::Tasks::DatabaseTasks.create config
9
- end
10
-
11
- if includes_test_environment? && !parallel?
12
- invoke_task_if_exists "parallel:create"
4
+ task :all => :load_config do
5
+ run_in_all_environments do |config, env|
6
+ if env == "test" && Rake::Task.task_defined?("parallel:create")
7
+ Rake::Task["parallel:create"].invoke
8
+ else
9
+ ActiveRecord::Tasks::DatabaseTasks.create config
10
+ end
13
11
  end
14
12
  end
15
13
  end
16
14
 
17
15
  namespace :drop do
18
- task :all => [:load_config] do
19
- invoke_task_if_exists :rails_env
20
- run_in_all_environments do |config|
21
- ActiveRecord::Base.establish_connection(config)
22
- ActiveRecord::Tasks::DatabaseTasks.drop config
23
- end
24
-
25
- if includes_test_environment? && !parallel?
26
- invoke_task_if_exists "parallel:drop"
16
+ task :all => :load_config do
17
+ run_in_all_environments do |config, env|
18
+ if env == "test" && Rake::Task.task_defined?("parallel:drop")
19
+ Rake::Task["parallel:drop"].invoke
20
+ else
21
+ ActiveRecord::Tasks::DatabaseTasks.drop config
22
+ end
27
23
  end
28
24
  end
29
25
  end
30
26
 
31
27
  namespace :migrate do
32
- task :all => [:load_config] do
33
- invoke_task_if_exists :rails_env
34
- run_in_all_environments do |config|
35
- ActiveRecord::Base.establish_connection(config)
36
- ActiveRecord::Tasks::DatabaseTasks.migrate
28
+ task :all => :load_config do
29
+ run_in_all_environments do |config, env|
30
+ if env == "test" && Rake::Task.task_defined?("parallel:migrate")
31
+ Rake::Task["parallel:migrate"].invoke
32
+ else
33
+ ActiveRecord::Tasks::DatabaseTasks.migrate
34
+ end
37
35
  end
36
+ end
37
+ end
38
38
 
39
- if includes_test_environment? && !parallel?
40
- invoke_task_if_exists "parallel:migrate"
39
+ namespace :rollback do
40
+ task :all => :load_config do
41
+ run_in_all_environments do |config, env|
42
+ if env == "test" && Rake::Task.task_defined?("parallel:rollback")
43
+ Rake::Task["parallel:rollback"].invoke
44
+ else
45
+ ActiveRecord::Base.connection.migration_context.rollback(1)
46
+ end
41
47
  end
42
-
43
- Rake::Task["db:_dump"].invoke
44
48
  end
45
49
  end
46
50
 
47
51
  def run_in_all_environments &block
48
- if defined?(ActiveRecord::Tasks::DatabaseTasks)
49
- ActiveRecord::Tasks::DatabaseTasks.send :each_local_configuration, &block
50
- else
51
- configs_for_environment.each &block
52
+ invoke_task_if_exists :rails_env
53
+
54
+ whitelist = %w(development test staging production)
55
+ modified_databases = Set.new
56
+
57
+ ActiveRecord::Base.configurations.configs_for.each do |db_config|
58
+ env = db_config.env_name
59
+ configuration = db_config.config
60
+ database = configuration["database"]
61
+
62
+ next unless database
63
+ next unless whitelist.include?(env)
64
+ next if modified_databases.include?(database)
65
+
66
+ if local_database?(configuration)
67
+ ActiveRecord::Base.establish_connection configuration
68
+ block.call configuration, env
69
+ else
70
+ $stderr.puts "This task only modifies local databases. #{database} is on a remote host."
71
+ end
72
+
73
+ modified_databases << database
52
74
  end
75
+
76
+ Rake::Task["db:_dump"].invoke
53
77
  end
54
78
 
55
- def includes_test_environment?
56
- %w(development test).include?(rails_env)
79
+ def local_database?(configuration)
80
+ configuration["host"].blank? || LOCAL_HOSTS.include?(configuration["host"])
81
+ end
82
+
83
+ def test_environment?
84
+ rails_env == "test"
57
85
  end
58
86
 
59
87
  def rails_env
@@ -63,10 +91,6 @@ if defined?(ActiveRecord)
63
91
  ENV["RAILS_ENV"]
64
92
  end
65
93
  end
66
-
67
- def parallel?
68
- !!ENV["TEST_ENV_NUMBER"]
69
- end
70
94
  end
71
95
  end
72
96
 
@@ -1,6 +1,6 @@
1
1
  module Bard
2
2
  module Rake
3
- VERSION = "0.16.1"
3
+ VERSION = "0.17.0"
4
4
  end
5
5
  end
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bard-rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.1
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-31 00:00:00.000000000 Z
11
+ date: 2019-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -112,8 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  - !ruby/object:Gem::Version
113
113
  version: '0'
114
114
  requirements: []
115
- rubyforge_project:
116
- rubygems_version: 2.6.14
115
+ rubygems_version: 3.0.3
117
116
  signing_key:
118
117
  specification_version: 4
119
118
  summary: Rake tasks for all bard projects.