batch_manager 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDVkYjIwYTM5NjUxNzliYjE1NDVkNDdmZTg1YmI1ZjRhN2M2NTE5NQ==
4
+ ZmUxYjIzODRlMmUzZWViNmYyNGZmMjdjMjZlMjZmOGRlYjliMjY1MA==
5
5
  data.tar.gz: !binary |-
6
- MWZmZWNjM2Q0ZDdjNGU2MGRiMjg4Njc0ODg2ZjI5Njk3ZmRjYmFmOA==
6
+ YmM2NWMzY2RiN2IyNjRkNTY3ZTg0NDE4ZDExYWQ4Mzc2MzMyYTVjMQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NTZlOWM0ZTg2NzcxN2YzZjQ0ODg2ZDM5NjkwNTFmYTRhOTYzNWY1MmE1OTk4
10
- NWIzOGQ1NDMyYTkxMGUyOTA2MmJhNjI3YzQ3YTliOTJhY2U2ZWNhYzJmNDYx
11
- NmI0YTdmZDQzMzQzM2ZkYTE1NmEyMTQ1NzA5NjMyMDI5MDc4ODE=
9
+ N2MxMTUyNWJjYjZmYjUzOTRiZTY2MDkxNjEyNzFkODRhM2Q3ZDNlMzU4MTAz
10
+ ZTRjODMxYTkyOTljMWZlYTA3ZjYwMGUyZWFhZGIwNTIyZjA2MGVlMzg4OTJi
11
+ ZGRkZjQwNjdlODE0NDgxM2VhZjJjZDQ4ZDUwNTM5ZmMyZjY0YWU=
12
12
  data.tar.gz: !binary |-
13
- YWQ1Yzk2ODhjMzEwNDQ0YWUxMzcxYzkxNWRiMGIwYjA0OWM0YTdiMTBmMGU3
14
- ODZlN2QwNDMzNTExM2IwZmRjOTQ1Zjk1MGYxOTE2ZGE4NDk2NmRhOTAwOGEx
15
- M2UxNjI1OTcxYmFmMmIyMjRjY2ZhODBkNTM2MzVlYzk3NDFjMjI=
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
- # TODO: config.batch_manager.save_log = true
26
- # TODO: config.batch_manager.log_dir = "log/batch"
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
- def self.exec(batch_file, options)
6
- batch_file_path = batch_full_path(batch_file)
7
- if File.exist?(batch_file_path)
8
- batch_status = BatchManager::BatchStatus.new(batch_file_path)
9
- if options[:force] || batch_status.can_run?
10
- @wet = options[:wet]
11
- eval File.read(batch_file_path)
12
- batch_status.update_schema
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 "Cannot run this batch."
21
+ raise "File not exist."
15
22
  end
16
- else
17
- raise "File not exist."
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 << BatchManager::BatchStatus.new(f)
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
- # TODO
23
+ BatchManager::BatchStatus.new(file_name)
24
24
  end
25
25
  end
26
26
  end
@@ -1,3 +1,3 @@
1
1
  module BatchManager
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  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
- p "Wet run completed!"
14
+ Rails.logger.info "Wet run completed!"
15
15
  else
16
- p "Rolling back."
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.3
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-28 00:00:00.000000000 Z
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