capistrano-deploylock 0.0.1 → 0.0.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: 474b17aedc4324ccbd1bed26e6ca008b1c4cba95
4
- data.tar.gz: 34aafe9acf3e96b5e490846ee02ede7061df93b6
3
+ metadata.gz: fb6c57e60fd26e74432dce9a91e0d3356b623a5c
4
+ data.tar.gz: a4b44a64b340ac14e56e42cb69070a1f68f25676
5
5
  SHA512:
6
- metadata.gz: 9df8766664d48d0af8b24b397c4f98d4573cbf7ae070905a1daf249d87c655e5dccbaa69480cbca22cb01d8c765e0bbd1da05014ae9b26b6e917f7a0b3e90d26
7
- data.tar.gz: ac65b3cfea63459f742b77b7bcd3c10ab84643b7bc2967f12db44e17633b6d01aa1967f145fa55bb729a7ec158f4dd45bdbaf43f835949f04ab120c5a7714ee8
6
+ metadata.gz: 3f0e0af14d52dae19ed6e29d7a79fe43475b2d048321b39826f346e2484f60a6d4598bd59b0c89ad0a9945da8a768083ce4292349ac2da6c6da3c78bb9e5c653
7
+ data.tar.gz: d10a993959109063058bf1f1fd5d349c192151137c9e527eb7135e0e56af9bad095610007c792ccde8f2850b5b48a3b8ca6267b5ecdb8f7976497f9a99ca18a4
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Capistrano::Deploylock
2
2
 
3
- TODO: Write a gem description
3
+ [![Gem Version](https://badge.fury.io/rb/capistrano-deploylock.svg)](http://badge.fury.io/rb/capistrano-deploylock)
4
+
5
+ デプロイした環境を一日だけロックする
4
6
 
5
7
  ## Installation
6
8
 
@@ -29,6 +31,48 @@ before "deploy:lock:start", "deploy:lock:check"
29
31
  before "deploy", "deploy:lock:start"
30
32
  ~~~
31
33
 
34
+ ## なぜ作ったのか
35
+ 1. デプロイしていいか聞きまわるの面倒くさい とはいえ一人ずつサーバ作って管理するというのも面倒
36
+ 1. デプロイしていいかその環境自体に聞けばイイジャンという発想
37
+ 1. 要はlockファイルさえなければあらゆる環境に自由にデプロイしたい. lockファイル作っとかないほうが悪い状態が効率が良い
38
+
39
+ ## 機能仕様
40
+ 1. `` cap deploy`` 後、 自分以外のユーザが24hデプロイできないようになる
41
+ 1. `` cap deploy:lock:end`` で取り消し可能
42
+
43
+ ## 詳細仕様
44
+ 1. `` cap deploy`` 時にdeploy_lock.ymlファイルをshared/systemに作成(`` cap deploy:lock:start`` フック)
45
+ 1. `` cap deploy:lock:start `` 時にdeploy_lock.ymlファイルがshared/systemにないか確認(`` cap deploy:lock:start`` フック)
46
+ 1. lockファイルが存在する場合
47
+  * 自分が作ったやつなら無視して、`` expired_at`` を今から24h後に更新
48
+  * 他人が作ったやつで`` expired_at > Time.now `` ならロック
49
+
50
+ * deploy_lock.ymlにはデプロイしたuser名と, 現在時間の24時間後が、expired_at時間として入る
51
+
52
+
53
+ ## cmd
54
+
55
+
56
+ * ロック開始
57
+
58
+ ~~~
59
+ % bundle exec cap $STAGE deploy:lock:start
60
+ ~~~
61
+
62
+ * ロック終了
63
+
64
+ ~~~
65
+ % bundle exec cap $STAGE deploy:lock:end
66
+ ~~~
67
+
68
+ * ロック確認
69
+
70
+ ~~~
71
+ % bundle exec cap $STAGE deploy:lock:check
72
+ ~~~
73
+
74
+
75
+
32
76
  ## Contributing
33
77
 
34
78
  1. Fork it ( https://github.com/[my-github-username]/capistrano-deploylock/fork )
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.required_ruby_version = '~> 2.1.0'
22
+
21
23
  spec.add_development_dependency "bundler", "~> 1.7"
22
24
  spec.add_development_dependency "rake", "~> 10.0"
23
25
  spec.add_development_dependency "minitest"
@@ -36,9 +36,13 @@ module Capistrano::Deploylock
36
36
  `git config --get user.name`
37
37
  end
38
38
 
39
+ def remove_local_file
40
+ FileUtils.rm deploy_lock_file_local_path, force: true
41
+ end
42
+
39
43
  namespace :deploy do
40
44
  namespace :lock do
41
- desc 'デプロイロックを確認する'
45
+ desc 'デプロイロックを確認する'
42
46
  task :start, roles: :web do
43
47
  on_rollback { run "rm -f #{deploy_lock_remote_path}" }
44
48
  require 'erb'
@@ -54,57 +58,57 @@ module Capistrano::Deploylock
54
58
  puts "\n**** [LOCKED] #{rails_env}はロックされ、有効期限内が設定されました. **** "
55
59
  puts "\n locked_user : #{user}"
56
60
  puts " expired_at : #{expired_at}\n\n"
57
-
58
- erb = ERB.new(File.read("#{deploy_lock_template_path}.erb")).result(binding)
59
- put erb, "#{deploy_lock_remote_path}", mode: 0644
60
- lock_start_log
61
- end
62
61
 
63
- desc 'デプロイロックを確認する'
64
- task :end, roles: :web do
65
- lock_force_end(true)
62
+ erb = ERB.new(File.read("#{deploy_lock_template_path}.erb")).result(binding)
63
+ put erb, "#{deploy_lock_remote_path}", mode: 0644
64
+ lock_start_log
65
+ end
66
+
67
+ desc 'デプロイロックを解除する'
68
+ task :end, roles: :web do
69
+ lock_force_end(true)
70
+ end
71
+
72
+ desc 'デプロイロックを設定する'
73
+ task :check, roles: :web do
74
+ unless remote_file_exists?(deploy_lock_remote_path)
75
+ puts '[SKIP] ロックファイルがありません.'
76
+ next
66
77
  end
67
78
 
68
- desc 'デプロイロックを確認する'
69
- task :check, roles: :web do
70
- unless remote_file_exists?(deploy_lock_remote_path)
71
- puts '[SKIP] ロックファイルがありません.'
72
- next
73
- end
74
-
75
- FileUtils.rm deploy_lock_file_local_path, force: true
76
- FileUtils.mkdir_p './public/system'
79
+ FileUtils.rm deploy_lock_file_local_path, force: true
80
+ FileUtils.mkdir_p './public/system'
77
81
 
78
- get deploy_lock_remote_path, deploy_lock_file_local_path
79
- lock = YAML.load_file deploy_lock_file_local_path
82
+ get deploy_lock_remote_path, deploy_lock_file_local_path
83
+ lock = YAML.load_file deploy_lock_file_local_path
80
84
 
81
- if Time.now > lock["expired_at"]
82
- puts '[SKIP] ロックファイルの設定期限が過ぎています.'
83
- lock_force_end(false)
84
- next
85
- end
85
+ if Time.now > lock["expired_at"]
86
+ puts '[SKIP] ロックファイルの設定期限が過ぎています.'
87
+ remove_local_file
88
+ lock_force_end(false)
89
+ next
90
+ end
86
91
 
87
- current_user = git_config_user_name.chomp
88
- if lock["user"] == current_user
89
- puts '[SKIP] あなたのロックファイルです.'
90
- next
91
- end
92
+ current_user = git_config_user_name.chomp
93
+ if lock["user"] == current_user
94
+ puts '[SKIP] あなたのロックファイルです.'
95
+ remove_local_file
96
+ next
97
+ end
92
98
 
93
- puts "\n**** [LOCKED] #{rails_env}はロックされ、有効期限内です. **** "
94
- puts "\n locked_user : #{lock["user"]}"
95
- puts " expired_at : #{lock["expired_at"]}\n\n"
99
+ puts "\n**** [LOCKED] #{rails_env}はロックされ、有効期限内です. **** "
100
+ puts "\n locked_user : #{lock["user"]}"
101
+ puts " expired_at : #{lock["expired_at"]}\n\n"
96
102
 
97
- puts "ロックは下記のコマンドで取り消しできます。"
98
- puts "bundle exedc cap $STAGENAME deploy:lock:end"
103
+ puts "ロックは下記のコマンドで取り消しできます。"
104
+ puts "bundle exedc cap $STAGENAME deploy:lock:end"
99
105
 
100
- FileUtils.rm './public/system/deploy_lock.yml', force: true
101
- run "hostname; exit 1"
102
- end
106
+ remove_local_file
107
+ run "hostname; exit 1"
108
+ end
103
109
  end
104
110
  end
105
111
  end
106
-
107
-
108
112
  end
109
113
  end
110
114
 
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Deploylock
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-deploylock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tetuyoko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-04 00:00:00.000000000 Z
11
+ date: 2014-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -102,9 +102,9 @@ require_paths:
102
102
  - lib
103
103
  required_ruby_version: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - ">="
105
+ - - "~>"
106
106
  - !ruby/object:Gem::Version
107
- version: '0'
107
+ version: 2.1.0
108
108
  required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - ">="
@@ -120,4 +120,3 @@ test_files:
120
120
  - test/minitest_helper.rb
121
121
  - test/test_capistrano.rb
122
122
  - test/test_capistrano/deploylock.rb
123
- has_rdoc: