batch_manager 0.1.3 → 0.1.4
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 +8 -8
- data/README.rdoc +12 -2
- data/lib/batch_manager/executor.rb +23 -11
- data/lib/batch_manager/logger.rb +26 -0
- data/lib/batch_manager/monitor.rb +2 -2
- data/lib/batch_manager/version.rb +1 -1
- data/lib/batch_manager.rb +11 -0
- data/lib/generators/batch/templates/active_record/batch.rb +2 -2
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmUxYjIzODRlMmUzZWViNmYyNGZmMjdjMjZlMjZmOGRlYjliMjY1MA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmM2NWMzY2RiN2IyNjRkNTY3ZTg0NDE4ZDExYWQ4Mzc2MzMyYTVjMQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
N2MxMTUyNWJjYjZmYjUzOTRiZTY2MDkxNjEyNzFkODRhM2Q3ZDNlMzU4MTAz
|
10
|
+
ZTRjODMxYTkyOTljMWZlYTA3ZjYwMGUyZWFhZGIwNTIyZjA2MGVlMzg4OTJi
|
11
|
+
ZGRkZjQwNjdlODE0NDgxM2VhZjJjZDQ4ZDUwNTM5ZmMyZjY0YWU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZjkzNGVlMWVkOGNmYzYzNjExNmVmMTRkNGI5Y2EwMmMyM2M1MDBmNmY2MTg1
|
14
|
+
NTdlNzA2ODQ5YjE3NzIzNTBmNjQ4OGQ1Mjc1MjkxMTUyNjA5MjYzMjViOGM2
|
15
|
+
YTU2MmQ5ZjI5YjliYzBkMWQ4ZjU1NzEzNWVmMGJlZDZlMmVhZjA=
|
data/README.rdoc
CHANGED
@@ -22,8 +22,8 @@ This will create a table 'schema_batches' like 'schema_migrations' to save the s
|
|
22
22
|
== Configuration
|
23
23
|
|
24
24
|
config.batch_manager.batch_dir = "script/batch"
|
25
|
-
|
26
|
-
|
25
|
+
config.batch_manager.save_log = true
|
26
|
+
config.batch_manager.log_dir = "log/batch"
|
27
27
|
|
28
28
|
You can change the default configuration in config/application.rb
|
29
29
|
|
@@ -59,6 +59,16 @@ Please use this command instead of 'rails runner' to run batch scripts.
|
|
59
59
|
-f, --force
|
60
60
|
-w, --wet
|
61
61
|
|
62
|
+
== Logger
|
63
|
+
|
64
|
+
Please use Rails.logger in batch scripts to output logs, and then BatchManager will automatically also output logs to the file in the configured log directory.
|
65
|
+
|
66
|
+
Rails.logger.debug
|
67
|
+
Rails.logger.info
|
68
|
+
Rails.logger.warn
|
69
|
+
Rails.logger.error
|
70
|
+
Rails.logger.fatal
|
71
|
+
|
62
72
|
== Rake Tasks
|
63
73
|
|
64
74
|
show all batches
|
@@ -2,19 +2,31 @@ module BatchManager
|
|
2
2
|
class Executor
|
3
3
|
include BatchManager::Utils
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
class << self
|
6
|
+
def exec(batch_file, options = {})
|
7
|
+
batch_file_path = batch_full_path(batch_file)
|
8
|
+
if File.exist?(batch_file_path)
|
9
|
+
batch_status = BatchManager::BatchStatus.new(batch_file_path)
|
10
|
+
if options[:force] || batch_status.can_run?
|
11
|
+
@wet = options[:wet]
|
12
|
+
BatchManager::Logger.new(batch_status.name, @wet)
|
13
|
+
write_log_header(@wet)
|
14
|
+
eval(File.read(batch_file_path))
|
15
|
+
batch_status.update_schema
|
16
|
+
puts "Log saved at: #{Rails.logger.log_file}" if Rails.logger.log_file
|
17
|
+
else
|
18
|
+
raise "Cannot run this batch."
|
19
|
+
end
|
13
20
|
else
|
14
|
-
raise "
|
21
|
+
raise "File not exist."
|
15
22
|
end
|
16
|
-
|
17
|
-
|
23
|
+
end
|
24
|
+
|
25
|
+
def write_log_header(is_wet)
|
26
|
+
Rails.logger.info "=============================="
|
27
|
+
Rails.logger.info "= #{is_wet ? 'WET' : 'DRY'} RUN"
|
28
|
+
Rails.logger.info "= Ran at: #{Time.now.strftime("%Y-%m-%d %H:%M:%S")}"
|
29
|
+
Rails.logger.info "=============================="
|
18
30
|
end
|
19
31
|
end
|
20
32
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'log4r'
|
2
|
+
|
3
|
+
module BatchManager
|
4
|
+
class Logger
|
5
|
+
attr_accessor :logger
|
6
|
+
attr_reader :log_file
|
7
|
+
delegate :debug, :info, :warn, :error, :fatal, :add, :to => :logger
|
8
|
+
|
9
|
+
def initialize(batch_name, is_wet)
|
10
|
+
@logger = Log4r::Logger.new(batch_name)
|
11
|
+
@logger.outputters << Log4r::Outputter.stdout
|
12
|
+
if BatchManager.save_log?
|
13
|
+
log_file_name = is_wet ? "#{batch_name}_wet" : batch_name
|
14
|
+
@log_file = log_file_path(log_file_name)
|
15
|
+
@logger.outputters << Log4r::FileOutputter.new(log_file_name, :filename => @log_file)
|
16
|
+
end
|
17
|
+
Rails.logger = self
|
18
|
+
end
|
19
|
+
|
20
|
+
def log_file_path(file_name)
|
21
|
+
file_path = File.join(BatchManager.log_dir, file_name) + ".log"
|
22
|
+
FileUtils.mkdir_p(File.dirname(file_path)) unless File.exist?(file_path)
|
23
|
+
file_path
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -14,13 +14,13 @@ module BatchManager
|
|
14
14
|
def details
|
15
15
|
status_array = []
|
16
16
|
Dir.glob(File.join(BatchManager.batch_dir, "**", "*.rb")).sort.each do |f|
|
17
|
-
status_array <<
|
17
|
+
status_array << self.status(f)
|
18
18
|
end
|
19
19
|
status_array
|
20
20
|
end
|
21
21
|
|
22
22
|
def status(file_name)
|
23
|
-
|
23
|
+
BatchManager::BatchStatus.new(file_name)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
data/lib/batch_manager.rb
CHANGED
@@ -7,6 +7,16 @@ module BatchManager
|
|
7
7
|
Rails.application.config.batch_manager.batch_dir
|
8
8
|
end
|
9
9
|
|
10
|
+
def log_dir
|
11
|
+
path = Rails.application.config.batch_manager.log_dir
|
12
|
+
path = File.join(Rails.root, path) unless path.start_with?("/")
|
13
|
+
path
|
14
|
+
end
|
15
|
+
|
16
|
+
def save_log?
|
17
|
+
Rails.application.config.batch_manager.save_log
|
18
|
+
end
|
19
|
+
|
10
20
|
def signal
|
11
21
|
"=Batch Manager="
|
12
22
|
end
|
@@ -18,3 +28,4 @@ require 'batch_manager/schema_batch'
|
|
18
28
|
require 'batch_manager/batch_status'
|
19
29
|
require 'batch_manager/executor'
|
20
30
|
require 'batch_manager/monitor'
|
31
|
+
require "batch_manager/logger"
|
@@ -11,9 +11,9 @@ ActiveRecord::Base.connection.with_standby do
|
|
11
11
|
ActiveRecord::Base.transaction do
|
12
12
|
|
13
13
|
if wet_run
|
14
|
-
|
14
|
+
Rails.logger.info "Wet run completed!"
|
15
15
|
else
|
16
|
-
|
16
|
+
Rails.logger.warn "Rolling back."
|
17
17
|
raise ActiveRecord::Rollback
|
18
18
|
end
|
19
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: batch_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Weihu Chen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05
|
11
|
+
date: 2013-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: log4r
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: sqlite3
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,6 +105,7 @@ files:
|
|
91
105
|
- bin/bm_exec
|
92
106
|
- lib/batch_manager/batch_status.rb
|
93
107
|
- lib/batch_manager/executor.rb
|
108
|
+
- lib/batch_manager/logger.rb
|
94
109
|
- lib/batch_manager/monitor.rb
|
95
110
|
- lib/batch_manager/railtie.rb
|
96
111
|
- lib/batch_manager/schema_batch.rb
|