batch_manager 0.1.4 → 0.2.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 +8 -8
- data/README.rdoc +13 -14
- data/bin/bm_exec +1 -1
- data/lib/batch_manager/batch_status.rb +1 -3
- data/lib/batch_manager/{railtie.rb → engine.rb} +1 -3
- data/lib/batch_manager/executor.rb +17 -10
- data/lib/batch_manager/logger.rb +16 -6
- data/lib/batch_manager/version.rb +1 -1
- data/lib/batch_manager.rb +8 -1
- data/lib/generators/batch/templates/active_record/batch.rb +2 -3
- data/lib/tasks/batch_manager_tasks.rake +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MTc0ZWI3YzZkZWQ0Nzk3ZDMzMmYzNDFhNjNkMWIxZjgyM2JhN2YxNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MTU5MTVlMTQ5OTMwODM4ZWJlYTk5OWZlMzM3NGQxN2QzOTRhNDUyNg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MTcyZTg1ZGFhMTIyODFlY2M5MzdiYmYxMmVlYjYyMDViMWI2MjY2NmJkYzli
|
10
|
+
ZDI1NzlkNDIwMGNjNjcxMmI1M2EyYmFmZjUzOTgzNzgwM2VlMmRmNDY0NTg1
|
11
|
+
ZmZlYmFlNmFkODlmZjdmZjE2NWVkOWQxNTZiZGU3ODU2NzIwY2E=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTU3NjA5M2E3OWRhMTk1ZGU2NTcwMWVjM2NjYjhlYjYxYWYxMDdiMWNkMjBh
|
14
|
+
MTk3ZWE3ODg2M2Q0ZDc2YmYwNGY2ZjkxN2ExOGQyNDAwYWQwNjdlM2ZjMDJl
|
15
|
+
OTUxYzg5Yjk3OThlNzlkOWUxMjBmNjNiNDMyMjI3NGI4MjMwNTY=
|
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= BatchManager {<img src="https://travis-ci.org/cctiger36/batch_manager.png?branch=master" alt="Build Status" />}[https://travis-ci.org/cctiger36/batch_manager] {<img src="https://badge.fury.io/rb/batch_manager.png" alt="Gem Version" />}[http://badge.fury.io/rb/batch_manager]
|
1
|
+
= BatchManager {<img src="https://travis-ci.org/cctiger36/batch_manager.png?branch=master" alt="Build Status" />}[https://travis-ci.org/cctiger36/batch_manager] {<img src="https://badge.fury.io/rb/batch_manager.png" alt="Gem Version" />}[http://badge.fury.io/rb/batch_manager] {<img src="https://coveralls.io/repos/cctiger36/batch_manager/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/cctiger36/batch_manager?branch=master]
|
2
2
|
|
3
3
|
A rails plugin to manage batch scripts similar to migrations.
|
4
4
|
|
@@ -42,7 +42,6 @@ The generated batch files will have the header like:
|
|
42
42
|
# =Batch Manager=
|
43
43
|
# =created_at: 2013-05-24 13:10:25
|
44
44
|
# =times_limit: 1
|
45
|
-
# =auto_run: false
|
46
45
|
# =group_name: GroupName
|
47
46
|
|
48
47
|
Add the "=Batch Manager=" to tell BatchManager to manage this batch file.
|
@@ -61,13 +60,19 @@ Please use this command instead of 'rails runner' to run batch scripts.
|
|
61
60
|
|
62
61
|
== Logger
|
63
62
|
|
64
|
-
Please use
|
63
|
+
Please use BatchManager.logger in batch scripts to output logs, and then BatchManager will automatically also output logs to the file in the configured log directory.
|
65
64
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
65
|
+
BatchManager.logger.debug
|
66
|
+
BatchManager.logger.info
|
67
|
+
BatchManager.logger.warn
|
68
|
+
BatchManager.logger.error
|
69
|
+
BatchManager.logger.fatal
|
70
|
+
|
71
|
+
When batches executed without BatchManager, it will write log to $stdout as default.
|
72
|
+
|
73
|
+
== Web interface
|
74
|
+
|
75
|
+
The web interface will at http://localhost:3000/batch_manager, you can also execute batches there.
|
71
76
|
|
72
77
|
== Rake Tasks
|
73
78
|
|
@@ -78,9 +83,3 @@ show all batches
|
|
78
83
|
show the details of batches
|
79
84
|
|
80
85
|
bundle exec rake batch:details
|
81
|
-
|
82
|
-
== TODO
|
83
|
-
|
84
|
-
Save log automatically.
|
85
|
-
Rake tasks to check the status.
|
86
|
-
Admin interface.
|
data/bin/bm_exec
CHANGED
@@ -16,8 +16,8 @@ end
|
|
16
16
|
ARGV.delete(batch_file)
|
17
17
|
|
18
18
|
APP_PATH = File.join('.', 'config', 'application')
|
19
|
-
ENV["RAILS_ENV"] = options[:environment] || "development"
|
20
19
|
require APP_PATH
|
20
|
+
#ENV["RAILS_ENV"] = options[:environment] || "development"
|
21
21
|
Rails.application.require_environment!
|
22
22
|
|
23
23
|
BatchManager::Executor.exec(batch_file, options)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module BatchManager
|
2
2
|
class BatchStatus
|
3
3
|
include BatchManager::Utils
|
4
|
-
attr_accessor :name, :created_at, :times_limit, :
|
4
|
+
attr_accessor :name, :created_at, :times_limit, :group_name, :managed
|
5
5
|
|
6
6
|
def initialize(path)
|
7
7
|
@name = batch_name(path)
|
@@ -46,8 +46,6 @@ module BatchManager
|
|
46
46
|
@times_limit = line.sub(/#\s*=times_limit:/, "").strip.to_i
|
47
47
|
elsif line.include?("=created_at:")
|
48
48
|
@created_at = Time.parse(line.sub(/#\s*=created_at:/, "").strip)
|
49
|
-
elsif line.include?("=auto_run:")
|
50
|
-
@auto_run = line.sub(/#\s*=auto_run:/, "").strip.downcase == "true"
|
51
49
|
elsif line.include?("=group_name:")
|
52
50
|
@group_name = line.sub(/#\s*=group_name:/, "").strip
|
53
51
|
end
|
@@ -7,13 +7,20 @@ module BatchManager
|
|
7
7
|
batch_file_path = batch_full_path(batch_file)
|
8
8
|
if File.exist?(batch_file_path)
|
9
9
|
batch_status = BatchManager::BatchStatus.new(batch_file_path)
|
10
|
-
|
11
|
-
|
12
|
-
BatchManager::Logger.new(batch_status.name, @wet)
|
10
|
+
@wet = options[:wet]
|
11
|
+
if !@wet || options[:force] || batch_status.can_run?
|
12
|
+
logger = BatchManager::Logger.new(batch_status.name, @wet)
|
13
13
|
write_log_header(@wet)
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
begin
|
15
|
+
eval(File.read(batch_file_path))
|
16
|
+
batch_status.update_schema if @wet
|
17
|
+
rescue => e
|
18
|
+
logger.error e
|
19
|
+
raise e
|
20
|
+
ensure
|
21
|
+
puts "Log saved at: #{BatchManager.logger.log_file}" if logger.log_file
|
22
|
+
logger.close
|
23
|
+
end
|
17
24
|
else
|
18
25
|
raise "Cannot run this batch."
|
19
26
|
end
|
@@ -23,10 +30,10 @@ module BatchManager
|
|
23
30
|
end
|
24
31
|
|
25
32
|
def write_log_header(is_wet)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
33
|
+
BatchManager.logger.info "=============================="
|
34
|
+
BatchManager.logger.info "= #{is_wet ? 'WET' : 'DRY'} RUN"
|
35
|
+
BatchManager.logger.info "= Ran at: #{Time.now.strftime("%Y-%m-%d %H:%M:%S")}"
|
36
|
+
BatchManager.logger.info "=============================="
|
30
37
|
end
|
31
38
|
end
|
32
39
|
end
|
data/lib/batch_manager/logger.rb
CHANGED
@@ -6,21 +6,31 @@ module BatchManager
|
|
6
6
|
attr_reader :log_file
|
7
7
|
delegate :debug, :info, :warn, :error, :fatal, :add, :to => :logger
|
8
8
|
|
9
|
+
class << self
|
10
|
+
def log_file_path(batch_name, is_wet = false)
|
11
|
+
log_file_name = is_wet ? "#{batch_name}_wet" : batch_name
|
12
|
+
File.join(BatchManager.log_dir, log_file_name) + ".log"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
9
16
|
def initialize(batch_name, is_wet)
|
10
17
|
@logger = Log4r::Logger.new(batch_name)
|
11
18
|
@logger.outputters << Log4r::Outputter.stdout
|
12
19
|
if BatchManager.save_log?
|
13
|
-
|
14
|
-
@
|
15
|
-
@logger.outputters << Log4r::FileOutputter.new(log_file_name, :filename => @log_file)
|
20
|
+
@log_file = prepare_log_file(batch_name, is_wet)
|
21
|
+
@logger.outputters << Log4r::FileOutputter.new(File.basename(@log_file, ".log"), :filename => @log_file)
|
16
22
|
end
|
17
|
-
|
23
|
+
BatchManager.logger = self
|
18
24
|
end
|
19
25
|
|
20
|
-
def
|
21
|
-
file_path =
|
26
|
+
def prepare_log_file(batch_name, is_wet)
|
27
|
+
file_path = self.class.log_file_path(batch_name, is_wet)
|
22
28
|
FileUtils.mkdir_p(File.dirname(file_path)) unless File.exist?(file_path)
|
23
29
|
file_path
|
24
30
|
end
|
31
|
+
|
32
|
+
def close
|
33
|
+
BatchManager.logger = nil
|
34
|
+
end
|
25
35
|
end
|
26
36
|
end
|
data/lib/batch_manager.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
require 'rails'
|
1
2
|
require 'active_record'
|
2
|
-
require 'batch_manager/
|
3
|
+
require 'batch_manager/engine'
|
3
4
|
|
4
5
|
module BatchManager
|
6
|
+
mattr_accessor :logger
|
7
|
+
|
5
8
|
class << self
|
6
9
|
def batch_dir
|
7
10
|
Rails.application.config.batch_manager.batch_dir
|
@@ -20,6 +23,10 @@ module BatchManager
|
|
20
23
|
def signal
|
21
24
|
"=Batch Manager="
|
22
25
|
end
|
26
|
+
|
27
|
+
def logger
|
28
|
+
@@logger ||= ::Logger.new(STDOUT)
|
29
|
+
end
|
23
30
|
end
|
24
31
|
end
|
25
32
|
|
@@ -2,7 +2,6 @@
|
|
2
2
|
# =Batch Manager=
|
3
3
|
# =created_at: <%= Time.now.strftime "%Y-%m-%d %H:%M:%S" %>
|
4
4
|
# =times_limit: 1
|
5
|
-
# =auto_run: false
|
6
5
|
|
7
6
|
wet_run = (ARGV[0] == "wet" || @wet)
|
8
7
|
|
@@ -11,9 +10,9 @@ ActiveRecord::Base.connection.with_standby do
|
|
11
10
|
ActiveRecord::Base.transaction do
|
12
11
|
|
13
12
|
if wet_run
|
14
|
-
|
13
|
+
BatchManager.logger.info "Wet run completed!"
|
15
14
|
else
|
16
|
-
|
15
|
+
BatchManager.logger.warn "Rolling back."
|
17
16
|
raise ActiveRecord::Rollback
|
18
17
|
end
|
19
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: batch_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Weihu Chen
|
@@ -104,10 +104,10 @@ extra_rdoc_files: []
|
|
104
104
|
files:
|
105
105
|
- bin/bm_exec
|
106
106
|
- lib/batch_manager/batch_status.rb
|
107
|
+
- lib/batch_manager/engine.rb
|
107
108
|
- lib/batch_manager/executor.rb
|
108
109
|
- lib/batch_manager/logger.rb
|
109
110
|
- lib/batch_manager/monitor.rb
|
110
|
-
- lib/batch_manager/railtie.rb
|
111
111
|
- lib/batch_manager/schema_batch.rb
|
112
112
|
- lib/batch_manager/utils.rb
|
113
113
|
- lib/batch_manager/version.rb
|