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 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