daddy 0.2.1 → 0.2.3
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 +4 -4
- data/lib/daddy/config.rb +6 -3
- data/lib/daddy/cucumber/capture.rb +1 -0
- data/lib/daddy/models/crud_extension.rb +17 -0
- data/lib/prefecture.rb +55 -0
- data/lib/tasks/cucumber.rake +1 -1
- data/lib/tasks/fluentd.conf +1 -0
- data/lib/tasks/fluentd.rake +47 -0
- data/lib/tasks/fluentd.repo +5 -0
- data/lib/tasks/fluentd_nginx.conf.erb +15 -0
- data/lib/tasks/god +44 -0
- data/lib/tasks/god.logrotate +11 -0
- data/lib/tasks/god.rake +38 -0
- data/lib/tasks/install.sh +45 -0
- data/lib/tasks/nginx.rake +11 -18
- data/lib/tasks/phantomjs.rake +2 -2
- data/lib/tasks/redis.rake +28 -0
- data/lib/tasks/resque.erb +112 -0
- data/lib/tasks/resque.rake +67 -0
- data/lib/tasks/task_helper.rb +10 -0
- metadata +43 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a501b67659185e10c75a00f791dceff99f819cde
|
4
|
+
data.tar.gz: 4d8714649160bd2de66f6f745d424424b1d26f13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8af5b83a27d4a768a2a15162bcd56f2b8aceb738f2f4a1d5b60959a18a83d7f2201a65c625a9aee694c3ba7d852010538a3b202609c431d12618fc3c0d04c240
|
7
|
+
data.tar.gz: dc6265f19cf6cd80e665161934a6e23237cbca5ce7dddbe6e198765d4e206cbd7424a8e21260eceba31b19203e718f9ff720a67c16df6aa3c14062b5f0feb4a8
|
data/lib/daddy/config.rb
CHANGED
@@ -4,16 +4,19 @@ class Daddy::Config
|
|
4
4
|
|
5
5
|
def initialize(config_file)
|
6
6
|
if @config.nil?
|
7
|
-
|
8
7
|
if File.exist?(config_file)
|
9
8
|
@config = YAML.load_file(config_file)
|
9
|
+
else
|
10
|
+
@config = {}
|
10
11
|
end
|
11
12
|
end
|
12
|
-
@config
|
13
13
|
end
|
14
14
|
|
15
15
|
def use_feature_name?
|
16
|
-
@config
|
16
|
+
@config['cucumber'] && !!@config['cucumber']['use_feature_name']
|
17
17
|
end
|
18
18
|
|
19
|
+
def fluentd_nginx?
|
20
|
+
@config['fluentd'] && !!@config['fluentd']['nginx']
|
21
|
+
end
|
19
22
|
end
|
@@ -10,6 +10,23 @@ module Daddy
|
|
10
10
|
end
|
11
11
|
|
12
12
|
module InstanceMethods
|
13
|
+
|
14
|
+
def readable_by?(user)
|
15
|
+
true
|
16
|
+
end
|
17
|
+
|
18
|
+
def creatable_by?(user)
|
19
|
+
readable_by?(user)
|
20
|
+
end
|
21
|
+
|
22
|
+
def updatable_by?(user)
|
23
|
+
readable_by?(user)
|
24
|
+
end
|
25
|
+
|
26
|
+
def deletable_by?(user)
|
27
|
+
readable_by?(user)
|
28
|
+
end
|
29
|
+
|
13
30
|
def destroy_logically!
|
14
31
|
self.deleted = true
|
15
32
|
save!
|
data/lib/prefecture.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
# coding: UTF-8
|
2
|
+
|
3
|
+
module Prefecture
|
4
|
+
|
5
|
+
PREFECTURES = {
|
6
|
+
1 => '北海道',
|
7
|
+
2 => '青森県',
|
8
|
+
3 => '岩手県',
|
9
|
+
4 => '宮城県',
|
10
|
+
5 => '秋田県',
|
11
|
+
6 => '山形県',
|
12
|
+
7 => '福島県',
|
13
|
+
8 => '茨城県',
|
14
|
+
9 => '栃木県',
|
15
|
+
10 => '群馬県',
|
16
|
+
11 => '埼玉県',
|
17
|
+
12 => '千葉県',
|
18
|
+
13 => '東京都',
|
19
|
+
14 => '神奈川県',
|
20
|
+
15 => '新潟県',
|
21
|
+
16 => '富山県',
|
22
|
+
17 => '石川県',
|
23
|
+
18 => '福井県',
|
24
|
+
19 => '山梨県',
|
25
|
+
20 => '長野県',
|
26
|
+
21 => '岐阜県',
|
27
|
+
22 => '静岡県',
|
28
|
+
23 => '愛知県',
|
29
|
+
24 => '三重県',
|
30
|
+
25 => '滋賀県',
|
31
|
+
26 => '京都府',
|
32
|
+
27 => '大阪府',
|
33
|
+
28 => '兵庫県',
|
34
|
+
29 => '奈良県',
|
35
|
+
30 => '和歌山県',
|
36
|
+
31 => '鳥取県',
|
37
|
+
32 => '島根県',
|
38
|
+
33 => '岡山県',
|
39
|
+
34 => '広島県',
|
40
|
+
35 => '山口県',
|
41
|
+
36 => '徳島県',
|
42
|
+
37 => '香川県',
|
43
|
+
38 => '愛媛県',
|
44
|
+
39 => '高知県',
|
45
|
+
40 => '福岡県',
|
46
|
+
41 => '佐賀県',
|
47
|
+
42 => '長崎県',
|
48
|
+
43 => '熊本県',
|
49
|
+
44 => '大分県',
|
50
|
+
45 => '宮崎県',
|
51
|
+
46 => '鹿児島県',
|
52
|
+
47 => '沖縄県',
|
53
|
+
}
|
54
|
+
|
55
|
+
end
|
data/lib/tasks/cucumber.rake
CHANGED
@@ -28,7 +28,7 @@ namespace :dad do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
output = "features/reports/index.html"
|
31
|
-
output = "
|
31
|
+
output = "test/reports" if format == 'junit'
|
32
32
|
|
33
33
|
command = "bundle exec cucumber --guess --quiet --no-multiline -r features --format pretty --format #{format} --out #{output} #{features.join(' ')} #{options}"
|
34
34
|
puts command
|
@@ -0,0 +1 @@
|
|
1
|
+
include conf.d/*.conf
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# coding: UTF-8
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
require_relative 'task_helper'
|
5
|
+
|
6
|
+
namespace :dad do
|
7
|
+
namespace :fluentd do
|
8
|
+
|
9
|
+
desc "Fluentdをインストールします。"
|
10
|
+
task :install do
|
11
|
+
if Daddy.config.fluentd_nginx?
|
12
|
+
nginx = File.join(Rails.root, 'tmp', 'fluentd', "#{app_name}_nginx.conf")
|
13
|
+
FileUtils.mkdir_p(File.dirname(nginx))
|
14
|
+
File.write(nginx, ERB.new(File.read(File.join(File.dirname(__FILE__), 'fluentd_nginx.conf.erb'))).result)
|
15
|
+
else
|
16
|
+
FileUtils.rm_f(nginx)
|
17
|
+
end
|
18
|
+
|
19
|
+
script = <<-EOF
|
20
|
+
#!/bin/bash
|
21
|
+
|
22
|
+
sudo rpm --import http://packages.treasure-data.com/redhat/RPM-GPG-KEY-td-agent
|
23
|
+
sudo cp -f #{File.join(File.dirname(__FILE__), 'fluentd.repo')} /etc/yum.repos.d/
|
24
|
+
sudo yum install td-agent
|
25
|
+
sudo gem install fluent-plugin-mongo
|
26
|
+
|
27
|
+
sudo cp -f #{File.join(File.dirname(__FILE__), 'fluentd.conf')} /etc/td-agent/td-agent.conf
|
28
|
+
sudo mkdir -p /etc/td-agent/conf.d
|
29
|
+
|
30
|
+
if [ -e #{nginx} ]; then
|
31
|
+
sudo cp -f #{nginx} /etc/td-agent/conf.d
|
32
|
+
sudo usermod -aG adm td-agent
|
33
|
+
fi
|
34
|
+
|
35
|
+
sudo /sbin/chkconfig td-agent on
|
36
|
+
if [ -e /var/run/td-agent/td-agent.pid ]; then
|
37
|
+
sudo /etc/init.d/td-agent restart
|
38
|
+
else
|
39
|
+
sudo /etc/init.d/td-agent start
|
40
|
+
fi
|
41
|
+
EOF
|
42
|
+
tmpfile = File.join(Rails.root, 'tmp', 'dad-fluentd-install-' + Daddy::Utils::StringUtils.current_time + '.sh')
|
43
|
+
File.write(tmpfile, ERB.new(script).result)
|
44
|
+
fail unless system("bash #{tmpfile}")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<source>
|
2
|
+
type tail
|
3
|
+
format /^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" "(?<forwarder>[^\"]*)")?/
|
4
|
+
time_format %d/%b/%Y:%H:%M:%S %z
|
5
|
+
path /var/log/nginx/<%= app_name %>_access.log
|
6
|
+
tag <%= app_name %>.nginx.access
|
7
|
+
pos_file /var/log/td-agent/nginx.pos
|
8
|
+
</source>
|
9
|
+
<match <%= app_name %>.nginx.access>
|
10
|
+
type mongo
|
11
|
+
database <%= app_name %>
|
12
|
+
collection nginx_access
|
13
|
+
host localhost
|
14
|
+
port 27017
|
15
|
+
</match>
|
data/lib/tasks/god
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# god Startup script for God monitoring tool.
|
4
|
+
#
|
5
|
+
# chkconfig: - 85 15
|
6
|
+
# description: god monitors your system
|
7
|
+
#
|
8
|
+
|
9
|
+
CONFIG_FILES=/etc/god/*.god
|
10
|
+
PID=/var/run/god.pid
|
11
|
+
LOG=/var/log/god.log
|
12
|
+
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
13
|
+
RETVAL=0
|
14
|
+
|
15
|
+
case "$1" in
|
16
|
+
start)
|
17
|
+
god -P $PID -l $LOG --log-level info
|
18
|
+
for config in $CONFIG_FILES; do
|
19
|
+
god load $config
|
20
|
+
done
|
21
|
+
RETVAL=$?
|
22
|
+
;;
|
23
|
+
stop)
|
24
|
+
kill `cat $PID`
|
25
|
+
RETVAL=$?
|
26
|
+
;;
|
27
|
+
restart)
|
28
|
+
kill `cat $PID`
|
29
|
+
god -P $PID -l $LOG --log-level info
|
30
|
+
for config in $CONFIG_FILES; do
|
31
|
+
god load $config
|
32
|
+
done
|
33
|
+
RETVAL=$?
|
34
|
+
;;
|
35
|
+
status)
|
36
|
+
RETVAL=$?
|
37
|
+
;;
|
38
|
+
*)
|
39
|
+
echo "Usage: god {start|stop|restart|status}"
|
40
|
+
exit 1
|
41
|
+
;;
|
42
|
+
esac
|
43
|
+
|
44
|
+
exit $RETVAL
|
data/lib/tasks/god.rake
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# coding: UTF-8
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
namespace :dad do
|
6
|
+
namespace :god do
|
7
|
+
|
8
|
+
desc "Godをインストールします。"
|
9
|
+
task :install do
|
10
|
+
script = <<-EOF
|
11
|
+
#!/bin/bash
|
12
|
+
|
13
|
+
if [ -e /var/run/god.pid ]; then
|
14
|
+
sudo /etc/init.d/god stop
|
15
|
+
fi
|
16
|
+
|
17
|
+
sudo gem install god
|
18
|
+
sudo mkdir -p /etc/god
|
19
|
+
|
20
|
+
sudo cp -f #{File.join(File.dirname(__FILE__), 'god')} /etc/init.d/god
|
21
|
+
sudo chown root:root /etc/init.d/god
|
22
|
+
sudo chmod 755 /etc/init.d/god
|
23
|
+
|
24
|
+
sudo cp -f #{File.join(File.dirname(__FILE__), 'god.logrotate')} /etc/logrotate.d/god
|
25
|
+
sudo chown root:root /etc/logrotate.d/god
|
26
|
+
sudo chmod 644 /etc/logrotate.d/god
|
27
|
+
|
28
|
+
sudo /sbin/chkconfig god on
|
29
|
+
sudo /etc/init.d/god start
|
30
|
+
EOF
|
31
|
+
|
32
|
+
tmpfile = File.join(Rails.root, 'tmp', 'dad-god-install-' + Daddy::Utils::StringUtils.current_time + '.sh')
|
33
|
+
File.write(tmpfile, ERB.new(script).result)
|
34
|
+
fail unless system("bash #{tmpfile}")
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
echo "既にGodが起動していたら停止します。"
|
4
|
+
if [ -e /var/run/god.pid ]; then
|
5
|
+
sudo /etc/init.d/god stop
|
6
|
+
fi
|
7
|
+
|
8
|
+
echo "Godをインストールします。"
|
9
|
+
sudo gem install god
|
10
|
+
|
11
|
+
echo "Godの起動スクリプトを /etc/init.d/god に配置します。"
|
12
|
+
sudo cp -f script/god/god /etc/init.d/god
|
13
|
+
sudo chown root:root /etc/init.d/god
|
14
|
+
sudo chmod 755 /etc/init.d/god
|
15
|
+
|
16
|
+
echo "Godの設定ファイルを /etc/god/madai.god に配置します。"
|
17
|
+
export RAILS_ENV=$1
|
18
|
+
export RAILS_ROOT=$2
|
19
|
+
|
20
|
+
sudo mkdir -p /etc/god
|
21
|
+
erb -T - script/god/madai.god.erb > tmp/madai.god
|
22
|
+
sudo cp -f tmp/madai.god /etc/god/madai.god
|
23
|
+
sudo chown -R root:root /etc/god
|
24
|
+
sudo chmod 755 /etc/god
|
25
|
+
sudo chmod -R 644 /etc/god/*
|
26
|
+
|
27
|
+
unset RAILS_ENV
|
28
|
+
unset RAILS_ROOT
|
29
|
+
|
30
|
+
echo "Godのログロテート設定を /etc/logrotate.d/god に配置します。"
|
31
|
+
sudo cp -f script/god/logrotate /etc/logrotate.d/god
|
32
|
+
sudo chown root:root /etc/logrotate.d/god
|
33
|
+
sudo chmod 644 /etc/logrotate.d/god
|
34
|
+
|
35
|
+
echo "サービスの自動起動設定を行います。"
|
36
|
+
sudo /sbin/chkconfig god on
|
37
|
+
|
38
|
+
echo "Godを起動します。"
|
39
|
+
if [ -z ${NO_START} ]; then
|
40
|
+
NO_START=0
|
41
|
+
fi
|
42
|
+
|
43
|
+
if [ ${NO_START} -ne 1 ]; then
|
44
|
+
sudo /etc/init.d/god start
|
45
|
+
fi
|
data/lib/tasks/nginx.rake
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: UTF-8
|
2
2
|
|
3
3
|
require 'rake'
|
4
|
-
|
4
|
+
require_relative 'task_helper'
|
5
5
|
|
6
6
|
namespace :dad do
|
7
7
|
namespace :nginx do
|
@@ -29,31 +29,24 @@ namespace :dad do
|
|
29
29
|
|
30
30
|
system("sudo cp -f tmp/nginx.conf /etc/nginx/conf.d/nginx.conf")
|
31
31
|
|
32
|
-
|
33
32
|
if publish
|
34
33
|
system("sudo mkdir -p /var/lib/daddy")
|
35
34
|
system("sudo chown -R #{ENV['USER']}:#{ENV['USER']} /var/lib/daddy")
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
fail unless system("RAILS_ROOT=#{rails_root} RAILS_ENV=#{Rails.env} APP_NAME=#{app_name} erb -T - #{File.dirname(__FILE__)}/nginx.app.conf.erb > tmp/nginx.#{app_name}.conf")
|
45
|
-
system("sudo mkdir -p /etc/nginx/conf.d/servers")
|
46
|
-
system("sudo cp -f tmp/nginx.#{app_name}.conf /etc/nginx/conf.d/servers/#{app_name}.conf")
|
47
|
-
end
|
38
|
+
desc 'Nginxにアプリケーションの設定ファイルをインストールします。'
|
39
|
+
task :config => :environment do
|
40
|
+
fail unless system("RAILS_ROOT=#{rails_root} RAILS_ENV=#{Rails.env} APP_NAME=#{app_name} erb -T - #{File.dirname(__FILE__)}/nginx.app.conf.erb > tmp/nginx.#{app_name}.conf")
|
41
|
+
system("sudo mkdir -p /etc/nginx/conf.d/servers")
|
42
|
+
system("sudo cp -f tmp/nginx.#{app_name}.conf /etc/nginx/conf.d/servers/#{app_name}.conf")
|
48
43
|
end
|
49
44
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
system("sudo cp -f tmp/nginx.jenkins.conf /etc/nginx/conf.d/servers/jenkins.conf")
|
56
|
-
end
|
45
|
+
desc 'NginxにJenkinsの設定ファイルをインストールします。'
|
46
|
+
task :jenkins => :environment do
|
47
|
+
fail unless system("erb -T - #{File.dirname(__FILE__)}/nginx.jenkins.conf.erb > tmp/nginx.jenkins.conf")
|
48
|
+
system("sudo mkdir -p /etc/nginx/conf.d/servers")
|
49
|
+
system("sudo cp -f tmp/nginx.jenkins.conf /etc/nginx/conf.d/servers/jenkins.conf")
|
57
50
|
end
|
58
51
|
|
59
52
|
end
|
data/lib/tasks/phantomjs.rake
CHANGED
@@ -7,10 +7,10 @@ namespace :dad do
|
|
7
7
|
|
8
8
|
desc "PhantomJSをインストールします。"
|
9
9
|
task :install do
|
10
|
-
name = 'phantomjs-1.9.
|
10
|
+
name = 'phantomjs-1.9.7-linux-x86_64'
|
11
11
|
file = "#{name}.tar.bz2"
|
12
12
|
unless File.exist?("tmp/#{file}")
|
13
|
-
system("wget https://
|
13
|
+
system("wget https://bitbucket.org/ariya/phantomjs/downloads/#{file} -O tmp/#{file}")
|
14
14
|
end
|
15
15
|
system("rm -Rf tmp/#{name}")
|
16
16
|
system("cd tmp && tar jxf #{file}")
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: UTF-8
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
namespace :dad do
|
6
|
+
namespace :redis do
|
7
|
+
|
8
|
+
desc "Redisをインストールします。"
|
9
|
+
task :install do
|
10
|
+
script = <<-EOF
|
11
|
+
#!/bin/bash
|
12
|
+
|
13
|
+
if [ -e /var/run/redis/redis.pid ]; then
|
14
|
+
sudo /etc/init.d/redis stop
|
15
|
+
fi
|
16
|
+
|
17
|
+
sudo yum --enablerepo=epel install redis
|
18
|
+
sudo /sbin/chkconfig redis on
|
19
|
+
sudo /etc/init.d/redis start
|
20
|
+
EOF
|
21
|
+
|
22
|
+
tmpfile = File.join(Rails.root, 'tmp', 'dad-redis-install-' + Daddy::Utils::StringUtils.current_time + '.sh')
|
23
|
+
File.write(tmpfile, ERB.new(script).result)
|
24
|
+
fail unless system("bash #{tmpfile}")
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
<%
|
2
|
+
app_name = ENV['APP_NAME']
|
3
|
+
rails_env = ENV['RAILS_ENV']
|
4
|
+
rails_root = ENV['RAILS_ROOT']
|
5
|
+
user = ENV['USER']
|
6
|
+
num_workers = ENV['NUM_WORKERS']
|
7
|
+
-%>
|
8
|
+
# coding: UTF-8
|
9
|
+
|
10
|
+
<%= num_workers %>.times do |num|
|
11
|
+
God.watch do |w|
|
12
|
+
w.dir = "<%= rails_root %>"
|
13
|
+
w.name = "resque-<%= app_name %>-#{num}"
|
14
|
+
w.log = "#{w.dir}/log/#{w.name}.log"
|
15
|
+
w.group = 'resque-<%= app_name %>'
|
16
|
+
w.interval = 60.seconds
|
17
|
+
w.env = {"QUEUE"=>"critical,high,normal,low", "RAILS_ENV"=>"<%= rails_env %>"}
|
18
|
+
w.start = "/usr/local/bin/bundle exec rake -f <%= rails_root %>/Rakefile environment resque:work"
|
19
|
+
|
20
|
+
w.uid = '<%= user %>'
|
21
|
+
w.gid = '<%= user %>'
|
22
|
+
|
23
|
+
# restart if memory gets too high
|
24
|
+
w.transition(:up, :restart) do |on|
|
25
|
+
on.condition(:memory_usage) do |c|
|
26
|
+
c.above = 255.megabytes
|
27
|
+
c.times = 2
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# determine the state on startup
|
32
|
+
w.transition(:init, { true => :up, false => :start }) do |on|
|
33
|
+
on.condition(:process_running) do |c|
|
34
|
+
c.running = true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# determine when process has finished starting
|
39
|
+
w.transition([:start, :restart], :up) do |on|
|
40
|
+
on.condition(:process_running) do |c|
|
41
|
+
c.running = true
|
42
|
+
c.interval = 5.seconds
|
43
|
+
end
|
44
|
+
|
45
|
+
# failsafe
|
46
|
+
on.condition(:tries) do |c|
|
47
|
+
c.times = 5
|
48
|
+
c.transition = :start
|
49
|
+
c.interval = 5.seconds
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# start if process is not running
|
54
|
+
w.transition(:up, :start) do |on|
|
55
|
+
on.condition(:process_running) do |c|
|
56
|
+
c.running = false
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
1.times do |num|
|
63
|
+
God.watch do |w|
|
64
|
+
w.dir = "<%= rails_root %>"
|
65
|
+
w.name = "resque-scheduler-<%= app_name %>-#{num}"
|
66
|
+
w.log = "#{w.dir}/log/#{w.name}.log"
|
67
|
+
w.group = 'resque-<%= app_name %>'
|
68
|
+
w.interval = 30.seconds
|
69
|
+
w.env = {"APP_NAME"=>"resque-scheduler-<%= app_name %>", "RAILS_ENV"=>"<%= rails_env %>"}
|
70
|
+
w.start = "/usr/local/bin/bundle exec rake -f <%= rails_root %>/Rakefile environment resque:scheduler"
|
71
|
+
|
72
|
+
w.uid = '<%= user %>'
|
73
|
+
w.gid = '<%= user %>'
|
74
|
+
|
75
|
+
# restart if memory gets too high
|
76
|
+
w.transition(:up, :restart) do |on|
|
77
|
+
on.condition(:memory_usage) do |c|
|
78
|
+
c.above = 256.megabytes
|
79
|
+
c.times = 2
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# determine the state on startup
|
84
|
+
w.transition(:init, { true => :up, false => :start }) do |on|
|
85
|
+
on.condition(:process_running) do |c|
|
86
|
+
c.running = true
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# determine when process has finished starting
|
91
|
+
w.transition([:start, :restart], :up) do |on|
|
92
|
+
on.condition(:process_running) do |c|
|
93
|
+
c.running = true
|
94
|
+
c.interval = 5.seconds
|
95
|
+
end
|
96
|
+
|
97
|
+
# failsafe
|
98
|
+
on.condition(:tries) do |c|
|
99
|
+
c.times = 5
|
100
|
+
c.transition = :start
|
101
|
+
c.interval = 5.seconds
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# start if process is not running
|
106
|
+
w.transition(:up, :start) do |on|
|
107
|
+
on.condition(:process_running) do |c|
|
108
|
+
c.running = false
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# coding: UTF-8
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
require 'yaml'
|
5
|
+
|
6
|
+
namespace :dad do
|
7
|
+
namespace :resque do
|
8
|
+
|
9
|
+
desc "Resqueをインストールします。"
|
10
|
+
task :install => :environment do
|
11
|
+
rails_root = ENV['RAILS_ROOT'] || Rails.root
|
12
|
+
app_name = YAML.load_file("#{rails_root}/config/database.yml")[Rails.env]['database']
|
13
|
+
|
14
|
+
script = <<-EOF
|
15
|
+
#!/bin/bash
|
16
|
+
|
17
|
+
export APP_NAME=#{app_name}
|
18
|
+
export RAILS_ROOT=#{rails_root}
|
19
|
+
export RAILS_ENV=#{Rails.env}
|
20
|
+
export NUM_WORKERS=1
|
21
|
+
erb -T - #{File.join(File.dirname(__FILE__), 'resque.erb')} > tmp/#{app_name}.god
|
22
|
+
|
23
|
+
sudo mkdir -p /etc/god
|
24
|
+
sudo cp -f tmp/#{app_name}.god /etc/god/#{app_name}.god
|
25
|
+
sudo chown -R root:root /etc/god
|
26
|
+
sudo chmod 755 /etc/god
|
27
|
+
sudo chmod -R 644 /etc/god/*
|
28
|
+
|
29
|
+
sudo /etc/init.d/god restart
|
30
|
+
EOF
|
31
|
+
|
32
|
+
tmpfile = File.join(Rails.root, 'tmp', 'dad-resque-install-' + Daddy::Utils::StringUtils.current_time + '.sh')
|
33
|
+
File.write(tmpfile, ERB.new(script).result)
|
34
|
+
fail unless system("bash #{tmpfile}")
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
require 'resque/tasks'
|
41
|
+
require 'resque_scheduler/tasks'
|
42
|
+
|
43
|
+
namespace :resque do
|
44
|
+
task :setup do
|
45
|
+
require 'resque'
|
46
|
+
require 'resque_scheduler'
|
47
|
+
|
48
|
+
# If you want to be able to dynamically change the schedule,
|
49
|
+
# uncomment this line. A dynamic schedule can be updated via the
|
50
|
+
# Resque::Scheduler.set_schedule (and remove_schedule) methods.
|
51
|
+
# When dynamic is set to true, the scheduler process looks for
|
52
|
+
# schedule changes and applies them on the fly.
|
53
|
+
# Note: This feature is only available in >=2.0.0.
|
54
|
+
Resque::Scheduler.dynamic = true
|
55
|
+
|
56
|
+
# The schedule doesn't need to be stored in a YAML, it just needs to
|
57
|
+
# be a hash. YAML is usually the easiest.
|
58
|
+
#Resque.schedule = YAML.load_file('your_resque_schedule.yml')
|
59
|
+
|
60
|
+
# If your schedule already has +queue+ set for each job, you don't
|
61
|
+
# need to require your jobs. This can be an advantage since it's
|
62
|
+
# less code that resque-scheduler needs to know about. But in a small
|
63
|
+
# project, it's usually easier to just include you job classes here.
|
64
|
+
# So, something like this:
|
65
|
+
#require 'jobs'
|
66
|
+
end
|
67
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daddy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ichy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -184,6 +184,34 @@ dependencies:
|
|
184
184
|
- - ~>
|
185
185
|
- !ruby/object:Gem::Version
|
186
186
|
version: '3.0'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: resque
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - ~>
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '1.25'
|
194
|
+
type: :runtime
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - ~>
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: '1.25'
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: resque-scheduler
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - ~>
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '2.5'
|
208
|
+
type: :runtime
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ~>
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '2.5'
|
187
215
|
- !ruby/object:Gem::Dependency
|
188
216
|
name: selenium-webdriver
|
189
217
|
requirement: !ruby/object:Gem::Requirement
|
@@ -298,6 +326,7 @@ files:
|
|
298
326
|
- lib/daddy/rails/railtie.rb
|
299
327
|
- lib/daddy/utils/sql_utils.rb
|
300
328
|
- lib/daddy/utils/string_utils.rb
|
329
|
+
- lib/prefecture.rb
|
301
330
|
- lib/sql_builder.rb
|
302
331
|
- lib/ssl/cert.pem
|
303
332
|
- lib/tasks/cucumber.rake
|
@@ -309,6 +338,10 @@ files:
|
|
309
338
|
- lib/tasks/db_create.rake
|
310
339
|
- lib/tasks/db_fixtures.rake
|
311
340
|
- lib/tasks/diary.rake
|
341
|
+
- lib/tasks/fluentd.conf
|
342
|
+
- lib/tasks/fluentd.rake
|
343
|
+
- lib/tasks/fluentd.repo
|
344
|
+
- lib/tasks/fluentd_nginx.conf.erb
|
312
345
|
- lib/tasks/generate/controller.rake
|
313
346
|
- lib/tasks/generate/routes.rake
|
314
347
|
- lib/tasks/generate/templates/_form.html.erb
|
@@ -319,6 +352,10 @@ files:
|
|
319
352
|
- lib/tasks/generate/templates/routes.rb.erb
|
320
353
|
- lib/tasks/generate/templates/show.html.erb
|
321
354
|
- lib/tasks/generate/view.rake
|
355
|
+
- lib/tasks/god
|
356
|
+
- lib/tasks/god.logrotate
|
357
|
+
- lib/tasks/god.rake
|
358
|
+
- lib/tasks/install.sh
|
322
359
|
- lib/tasks/jenkins
|
323
360
|
- lib/tasks/jenkins.conf
|
324
361
|
- lib/tasks/jenkins.rake
|
@@ -329,6 +366,10 @@ files:
|
|
329
366
|
- lib/tasks/nginx.repo
|
330
367
|
- lib/tasks/phantomjs.rake
|
331
368
|
- lib/tasks/publish.rake
|
369
|
+
- lib/tasks/redis.rake
|
370
|
+
- lib/tasks/resque.erb
|
371
|
+
- lib/tasks/resque.rake
|
372
|
+
- lib/tasks/task_helper.rb
|
332
373
|
- lib/tasks/tesseract.rake
|
333
374
|
- lib/tasks/test.rake
|
334
375
|
- lib/tasks/unicorn.erb
|