croner 0.1.1 → 0.1.2

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
2
  SHA1:
3
- metadata.gz: 71d7ec1f376924be8e2810352fb1e6779682f810
4
- data.tar.gz: 201feb08189a2f7631a4c4a0e884b79f374148a3
3
+ metadata.gz: 5608580712caf9811e0603d56922e3b5ccd268fd
4
+ data.tar.gz: 24e4e395203db4487af53fd49ca09d14d4f08cf8
5
5
  SHA512:
6
- metadata.gz: 637d3fca0da9cd0a8db3a1ec4f73060f0ea1e021e41bf7f06c1af4df471881d2aa35652630b5f66fd05fefdc69a341893c7f0a1a5ad45c105b9dcb647f2708cc
7
- data.tar.gz: 4bfe6da60691dff8bcae0b95b3a7b107361ceb56e66921759008665408971a68c347176b604390df2976d59e44326511664159d7a7102bbca910e1843ed16b25
6
+ metadata.gz: 8e39e60f0131f8552c8ec5846108312acd98ec8e2a38ea73791d40d66386b36f43c0d8c3e0f43a05095f576cb0b4aba83c09be9044e640b1ee73498c796e1022
7
+ data.tar.gz: b5db813a451fb586746fe6eaf8e286452f9d2e32b866e34268ab8dfb0c18a347ff6b9601c659720819694bfcd1e4cebef7d9eeeb4ca38a240699a5d8abd1822b
@@ -0,0 +1,27 @@
1
+ require 'capistrano/version'
2
+
3
+ if defined?(Capistrano::VERSION) && Gem::Version.new(Capistrano::VERSION).release >= Gem::Version.new('3.0.0')
4
+ namespace :croner do
5
+ desc "Update application's crontab entries using Croner"
6
+ task :update_crontab do
7
+ on roles(:db) do
8
+ within release_path do
9
+ with rails_env: fetch(:rails_env) do
10
+ execute :bundle, :exec, :rake, :"croner:update"
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ after "deploy:updated", "croner:update_crontab"
17
+ after "deploy:reverted", "croner:update_crontab"
18
+ end
19
+
20
+ namespace :load do
21
+ task :defaults do
22
+ set :croner_roles, ->{ :db }
23
+ end
24
+ end
25
+ else
26
+ ArgumentError.new('Required Capistrano Version >= 3.0')
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Croner
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
data/lib/croner.rb CHANGED
@@ -2,17 +2,17 @@ require 'croner/railtie'
2
2
 
3
3
  module Croner
4
4
  require "open3"
5
+
5
6
  def self.run
6
- # ホスト名毎のcron設定ファイルがある場合に実行する
7
- return {status: false, message: ''} unless File.exist?(Rails.root.join('config', 'croner', 'hosts', `hostname`.delete("\n")))
7
+ return {status: false, message: "couldn't found cron setting file"} unless File.exist?(Rails.root.join('config', 'croner', 'hosts', `hostname`.delete("\n")))
8
8
 
9
- # 設定内容を取得
9
+ # get cron contents
10
10
  insert_rows = File.read(Rails.root.join('config', 'croner', 'hosts', `hostname`.delete("\n"))).split("\n")
11
11
 
12
- # 現在のcron設定をバックアップしておく
12
+ # backup current cron contents
13
13
  `crontab -l > cron_#{Time.current.strftime('%Y%m%d%H%M%S')}.bak`
14
14
 
15
- # 現在のcron設定を取得
15
+ # get current cron contents
16
16
  cron_rows = `crontab -l`.split("\n")
17
17
 
18
18
  application_name = Rails.application.class.parent_name
@@ -22,11 +22,9 @@ module Croner
22
22
  start_index = cron_rows.index(cron_start_row)
23
23
  end_index = cron_rows.index(cron_end_row)
24
24
 
25
- # 開始行か終了行のどちらかのみ存在する場合はエラー
26
- return ArgumentError.new('現在のcron設定にCronerによる不正な行が存在しています') unless ((start_index.present? && end_index.present?) || (start_index.blank? && end_index.blank?))
25
+ return ArgumentError.new('current cron contents has unvalid settings by Croner!') unless ((start_index.present? && end_index.present?) || (start_index.blank? && end_index.blank?))
27
26
 
28
27
  if start_index.present? && end_index.present?
29
- # 既存の内容を削除
30
28
  cron_rows.slice!((start_index + 1)..(end_index - 1))
31
29
  else
32
30
  start_index = cron_rows.count
@@ -34,18 +32,14 @@ module Croner
34
32
  cron_rows << cron_end_row
35
33
  end
36
34
 
37
- # cron設定を挿入
38
35
  cron_rows.insert(start_index + 1, *insert_rows)
39
36
 
40
- # ファイルに一時保存
41
37
  File.open("cron_tmp", "w") do |f|
42
38
  cron_rows.each{|row| f.puts(row)}
43
39
  end
44
40
 
45
- # ファイルの内容をcronに出力
46
41
  stdout, stderror, status = Open3.capture3("crontab cron_tmp")
47
42
 
48
- # ファイルを削除
49
43
  File.delete("cron_tmp")
50
44
 
51
45
  if status.success?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: croner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ykogure
@@ -49,6 +49,7 @@ files:
49
49
  - README.md
50
50
  - Rakefile
51
51
  - lib/croner.rb
52
+ - lib/croner/capistrano/croner.rake
52
53
  - lib/croner/railtie.rb
53
54
  - lib/croner/version.rb
54
55
  - lib/tasks/croner_tasks.rake