capistrano-deploylock 0.0.1 → 0.0.2

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