bard-rake 0.16.1 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
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.