oysters 1.2.1 → 1.2.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: c20cba2532bf771c8aa807c77a34aca1ce413a18
4
- data.tar.gz: 3bccd352c578c19da4f8306f93244d2663a4c03e
3
+ metadata.gz: ea9eeda4ba076675b827f384b4a6d556627627ad
4
+ data.tar.gz: 8d5669b9d4f64d27d65cd25484d37478f29ba0ae
5
5
  SHA512:
6
- metadata.gz: 1541a3ca984d2317d046b40336ab96d8de757561117b652f3ca49e9dd7b3353103b66eecdeeb2e48e18cbb41039d2975623c297bae71d604bcd3c5507fc1d746
7
- data.tar.gz: ba53eb87f0ede11d87be8c62dae56c9fca4f3610dd9e872311a19cc54219c0c62a1db49259bbe67b4e18599156668d917261e15f6ed7b42f03564dc180bd7a66
6
+ metadata.gz: 15da67a2b00ce7b9455166804cc6f1d2a3b748710ddf40f41da75aff0b1836c069066fa54a33842aeb5f7a425f74de4324cb8ef7f313ee244a9c8a526603cf7b
7
+ data.tar.gz: 6031b5ca3972e37aed3e297af21b3e2e5c0a1c71a96fe61c8744ab26491f03a84b4953c3eb0b532fe9e15f65b17a2ef6192181689b1cf0f85fe5523e57db43c5
@@ -7,29 +7,16 @@ Oysters.with_configuration do
7
7
  namespace :logrotate do
8
8
  desc 'Install logrotate config'
9
9
  task :install, roles: :app do
10
- log_path = [ Pathname.new(shared_path).join('log', "#{rails_env}.log").to_s ]
11
-
12
- if application == 'oiv-ui'
13
- %W(#{rails_env}_delayed_job.log #{rails_env}_security_audit.log unicorn_#{rails_env}.stderr.log skylight.log).each do |log|
14
- log_path << Pathname.new(shared_path).join('log', log).to_s
15
- end
16
- end
17
-
18
- if application == 'oiv-api'
19
- %W(skylight.log).each do |log|
20
- log_path << Pathname.new(shared_path).join('log', log).to_s
21
- end
22
- end
10
+ log_path = Pathname.new(shared_path).join('log', "*.log").to_s
23
11
 
24
12
  conf_path = "/etc/logrotate.d/#{application}_logs"
25
- log_path = log_path.join(' ')
26
13
  tmp_file = "/tmp/#{application}_logs_#{rand}"
27
14
  location = File.expand_path('../../templates/logrotate_config.erb', __FILE__)
28
15
  config = ERB.new(File.read(location))
29
16
 
30
17
  put config.result(binding), tmp_file
31
- sudo "mv #{tmp_file} #{conf_path}"
32
- sudo "logrotate #{conf_path}"
18
+ sudo "mv #{tmp_file} #{conf_path}", pty: true, shell: :bash
19
+ sudo "logrotate #{conf_path}", pty: true, shell: :bash
33
20
  end
34
21
  end
35
22
 
@@ -15,22 +15,22 @@ Oysters.with_configuration do
15
15
  task :install, roles: :app do
16
16
  tmp_config_path = "/tmp/#{program}_initd_script.sh"
17
17
  # Remove old tmp config if present
18
- run "sudo rm -f #{tmp_config_path}", pty: true, shell: :bash
18
+ sudo "rm -f #{tmp_config_path}", pty: true, shell: :bash
19
19
 
20
20
  config = File.read(File.expand_path("../scripts/#{program}_initd_script.sh", __FILE__))
21
21
  put config, tmp_config_path, shell: :bash
22
22
 
23
- run "sudo cp #{tmp_config_path} /etc/init.d/#{application}_#{program}", pty: true, shell: :bash
24
- run "sudo chmod +x /etc/init.d/#{application}_#{program}", pty: true, shell: :bash
25
- run "sudo chkconfig --add #{application}_#{program}", pty: true, shell: :bash
23
+ sudo "cp #{tmp_config_path} /etc/init.d/#{application}_#{program}", pty: true, shell: :bash
24
+ sudo "chmod +x /etc/init.d/#{application}_#{program}", pty: true, shell: :bash
25
+ sudo "chkconfig --add #{application}_#{program}", pty: true, shell: :bash
26
26
  run "rm -f #{tmp_config_path}", shell: :bash
27
27
  end
28
28
 
29
29
  #Run this task as a sudo user!
30
30
  desc "Remove #{program} init.d script"
31
31
  task :uninstall, roles: :app do
32
- run "sudo chkconfig --del #{application}_#{program}", pty: true, shell: :bash
33
- run "sudo rm -f /etc/init.d/#{application}_#{program}", pty: true, shell: :bash
32
+ sudo "chkconfig --del #{application}_#{program}", pty: true, shell: :bash
33
+ sudo "rm -f /etc/init.d/#{application}_#{program}", pty: true, shell: :bash
34
34
  end
35
35
  end
36
36
  end
@@ -45,20 +45,20 @@ Oysters.with_configuration do
45
45
  task :install, roles: :app do
46
46
  tmp_config_path = "/tmp/deployed_application_sysconfig.sh"
47
47
  # Remove old tmp config if present
48
- run "sudo rm -f #{tmp_config_path}", pty: true, shell: :bash
48
+ sudo "rm -f #{tmp_config_path}", pty: true, shell: :bash
49
49
 
50
50
  location = File.expand_path('../templates/app_sysconfig.sh.erb', __FILE__)
51
51
  config = ERB.new(File.read(location))
52
52
  put config.result(binding), tmp_config_path, shell: :bash
53
53
 
54
- run "sudo cp #{tmp_config_path} /etc/sysconfig/deployed_application", pty: true, shell: :bash
54
+ sudo "cp #{tmp_config_path} /etc/sysconfig/deployed_application", pty: true, shell: :bash
55
55
  run "rm -f #{tmp_config_path}", shell: :bash
56
56
  end
57
57
 
58
58
  #Run this task as a sudo user!
59
59
  desc 'Remove sysconfig'
60
60
  task :uninstall, roles: :app do
61
- run "sudo rm -f /etc/sysconfig/deployed_application", pty: true, shell: :bash
61
+ sudo "rm -f /etc/sysconfig/deployed_application", pty: true, shell: :bash
62
62
  end
63
63
  end
64
64
 
@@ -13,55 +13,62 @@ start() {
13
13
  local program
14
14
  local options
15
15
 
16
- echo "Starting KEWatcher"
17
16
  if [ -e $KEWATCHER_PIDFILE ] && kill -0 `cat $KEWATCHER_PIDFILE` > /dev/null 2>&1; then
18
17
  echo "KEWatcher is already Running"
19
- echo_success
20
18
  return 0
21
19
  fi
22
20
 
21
+ cd $ROOT_PATH
22
+
23
+ env_vars="RAILS_ENV=$RAILS_ENV"
23
24
  options="-m $KEWATCHER_MAX_WORKERS -c $KEWATCHER_REDIS_CONFIG -p $KEWATCHER_PIDFILE $KEWATCHER_VERBOSE"
25
+ program="source /home/$APP_USER/.bash_profile; $env_vars bundle exec $ROOT_PATH/bin/kewatcher $options 2>&1 >> $KEWATCHER_LOGFILE &"
24
26
 
25
- su $APP_USER -c "cd $ROOT_PATH; source /home/$APP_USER/.bash_profile; RAILS_ENV=$RAILS_ENV nohup bundle exec $ROOT_PATH/bin/kewatcher $options 2>&1 >> $KEWATCHER_LOGFILE &"
26
- RETVAL=$?
27
+ action 'Starting KEWatcher...' daemon --user "${APP_USER#$USER}" --pidfile=$KEWATCHER_PIDFILE $program
27
28
 
29
+ # workaround to allow KEWatcher to setup a trap for HUP signal
28
30
  sleep 5
29
-
30
- if [ $RETVAL -eq 0 ]; then
31
- echo_success
32
- else
33
- echo_failure
34
- fi
35
- echo
36
31
  }
37
32
 
38
33
  stop() {
39
- echo "Stopping KEWatcher"
40
-
41
34
  if [ -f $KEWATCHER_PIDFILE ]; then
42
- kill -s QUIT $(cat $KEWATCHER_PIDFILE)
43
- RETVAL=$?
44
- sleep 10
35
+ # The idea is to let KEWatcher to gracefully stop,
36
+ # wait with delay gives us dynamic wait interval
37
+ # limited by N tries.
38
+
39
+ action 'Stopping KEWatcher...' _stop_with_wait $(cat $KEWATCHER_PIDFILE)
45
40
  else
46
- RETVAL=1
41
+ echo "Resque KEWatcher is not running"
47
42
  fi
48
43
 
49
- echo "Killing stuck workers"
44
+ echo 'Killing stuck workers...'
50
45
  kill -s KILL `pgrep -xf "[r]esque-[0-9]+.*" | xargs` > /dev/null 2>&1
51
46
 
52
- if [ $RETVAL -eq 0 ]; then
53
- rm -f $KEWATCHER_PIDFILE
54
- else
55
- echo "Resque KEWatcher is not running"
56
- fi
57
- echo_success
47
+ rm -f $KEWATCHER_PIDFILE
48
+ }
49
+
50
+ _stop_with_wait() {
51
+ local pid delay tries try
52
+
53
+ delay=10
54
+ tries=3
55
+ pid=$1
56
+ try=0
57
+
58
+ kill -s QUIT $pid
59
+
60
+ while [ $try -lt $tries ] ; do
61
+ checkpid $pid || return 0
62
+ sleep $delay
63
+ let try+=1
64
+ done
58
65
  }
59
66
 
60
67
  case "$1" in
61
68
  start) start ;;
62
69
  stop) stop ;;
63
70
  restart)
64
- echo "Restarting Resque KEWatcher ... "
71
+ echo "Restarting Resque KEWatcher..."
65
72
  stop
66
73
  start
67
74
  ;;
@@ -15,42 +15,38 @@ start() {
15
15
 
16
16
  cd $ROOT_PATH
17
17
 
18
- echo "Starting Resque Scheduler"
19
18
  options="RAILS_ENV=$RAILS_ENV VERBOSE=$SCHEDULER_VERBOSE BACKGROUND=$BACKGROUND DYNAMIC_SCHEDULE=$DYNAMIC_SCHEDULE PIDFILE=$SCHEDULER_PIDFILE"
20
19
  program="source /home/$APP_USER/.bash_profile; bundle exec rake resque:scheduler $options 2>&1 >> $SCHEDULER_LOGFILE"
21
20
 
22
- if [[ $APP_USER == $USER ]]
23
- then
24
- daemon --pidfile=$SCHEDULER_PIDFILE $program
25
- else
26
- daemon --user $APP_USER --pidfile=$SCHEDULER_PIDFILE $program
27
- fi
28
- RETVAL=$?
21
+ action 'Starting Resque Scheduler...' daemon --user "${APP_USER#$USER}" --pidfile=$SCHEDULER_PIDFILE $program
29
22
 
30
- if [ $RETVAL -eq 0 ]; then
31
- echo_success
32
- else
33
- echo_failure
34
- fi
35
- echo
23
+ # workaround to allow Resque Scheduler to setup a trap for HUP signal
24
+ sleep 5
36
25
  }
37
26
 
38
27
  stop() {
39
- echo "Stopping Resque Scheduler"
40
-
41
28
  if [ -f $SCHEDULER_PIDFILE ]; then
42
- kill -s QUIT $(cat $SCHEDULER_PIDFILE)
43
- RETVAL=$?
29
+ action 'Stopping Resque Scheduler...' _stop_with_wait $(cat $SCHEDULER_PIDFILE)
44
30
  else
45
- RETVAL=1
31
+ echo 'Resque Scheduler is not running'
46
32
  fi
33
+ }
47
34
 
48
- if [ $RETVAL -eq 0 ]; then
49
- rm -f $SCHEDULER_PIDFILE
50
- else
51
- echo "Resque Scheduler is not running"
52
- fi
53
- echo_success
35
+ _stop_with_wait() {
36
+ local pid delay tries try
37
+
38
+ delay=2
39
+ tries=3
40
+ pid=$1
41
+ try=0
42
+
43
+ kill -s QUIT $pid
44
+
45
+ while [ $try -lt $tries ] ; do
46
+ checkpid $pid || return 0
47
+ sleep $delay
48
+ let try+=1
49
+ done
54
50
  }
55
51
 
56
52
  case "$1" in
@@ -59,7 +55,6 @@ case "$1" in
59
55
  restart)
60
56
  echo "Restarting Resque scheduler ... "
61
57
  stop
62
- sleep 2
63
58
  start
64
59
  ;;
65
60
  *)
@@ -16,54 +16,55 @@ start() {
16
16
 
17
17
  cd $ROOT_PATH
18
18
 
19
- echo "Starting Unicorn"
20
19
  env_vars="RAILS_ENV=$RAILS_ENV BUNDLE_GEMFILE=$BUNDLE_GEMFILE"
21
20
  options="-c $UNICORN_CONFIG -E $RAILS_ENV -D "
22
21
  program="source /home/$APP_USER/.bash_profile; $env_vars bundle exec unicorn $options"
23
22
 
24
- if [[ $APP_USER == $USER ]]
25
- then
26
- daemon --pidfile=$UNICORN_PIDFILE $program
27
- else
28
- daemon --user $APP_USER --pidfile=$UNICORN_PIDFILE $program
29
- fi
30
- RETVAL=$?
23
+ action 'Starting Unicorn...' daemon --user "${APP_USER#$USER}" --pidfile=$UNICORN_PIDFILE $program
24
+ }
25
+
26
+ stop() {
27
+ local unicorn_pid
31
28
 
32
- if [ $RETVAL -eq 0 ]; then
33
- echo_success
29
+ unicorn_pid=$(cat $UNICORN_PIDFILE)
30
+
31
+ if checkpid $unicorn_pid ; then
32
+ action 'Stopping Unicorn...' kill -s QUIT $unicorn_pid
34
33
  else
35
- echo_failure
34
+ echo "Unicorn is not running"
36
35
  fi
37
- echo
38
36
  }
39
37
 
40
- stop() {
41
- echo "Stopping Unicorn"
38
+ restart() {
39
+ local unicorn_pid restart_sleep
40
+
41
+ restart_sleep=5
42
+
43
+ echo "Restarting Unicorn..."
42
44
 
43
45
  if [ -f $UNICORN_PIDFILE ]; then
44
- kill -s QUIT $(cat $UNICORN_PIDFILE)
45
- RETVAL=$?
46
- else
47
- RETVAL=1
48
- fi
46
+ unicorn_pid=$(cat $UNICORN_PIDFILE)
47
+
48
+ action 'Clonning Master...' kill -s USR2 $unicorn_pid
49
49
 
50
- if [ $RETVAL -eq 0 ]; then
51
- rm -f $UNICORN_PIDFILE
50
+ [ "${?}" -ne 0 ] && return $?
51
+
52
+ sleep $restart_sleep
53
+
54
+ if checkpid $unicorn_pid ; then
55
+ action 'Killing old Master...' kill -s QUIT $unicorn_pid
56
+ fi
52
57
  else
53
58
  echo "Unicorn is not running"
59
+ start
60
+ return $?
54
61
  fi
55
- echo_success
56
62
  }
57
63
 
58
64
  case "$1" in
59
65
  start) start ;;
60
66
  stop) stop ;;
61
- restart)
62
- echo "Restarting Unicorn ... "
63
- stop
64
- sleep 5
65
- start
66
- ;;
67
+ restart) restart ;;
67
68
  *)
68
69
  echo "Usage: $0 {start|stop|restart}"
69
70
  exit 1
@@ -1,3 +1,3 @@
1
1
  module Oysters
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oysters
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Samoilov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-12 00:00:00.000000000 Z
11
+ date: 2016-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  version: '0'
111
111
  requirements: []
112
112
  rubyforge_project:
113
- rubygems_version: 2.2.2
113
+ rubygems_version: 2.5.1
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: Common capistrano recipes