mina-rails-tools 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +11 -0
  6. data/Rakefile +1 -0
  7. data/lib/mina/extras/apt.rb +66 -0
  8. data/lib/mina/extras/brew.rb +8 -0
  9. data/lib/mina/extras/extra.rb +111 -0
  10. data/lib/mina/extras/gem.rb +64 -0
  11. data/lib/mina/extras/god.rb +67 -0
  12. data/lib/mina/extras/local.rb +12 -0
  13. data/lib/mina/extras/methods.rb +194 -0
  14. data/lib/mina/extras/mysql.rb +12 -0
  15. data/lib/mina/extras/nginx.rb +44 -0
  16. data/lib/mina/extras/osx.rb +6 -0
  17. data/lib/mina/extras/platform.rb +29 -0
  18. data/lib/mina/extras/puma.rb +5 -0
  19. data/lib/mina/extras/rails.rb +11 -0
  20. data/lib/mina/extras/rainbows.rb +63 -0
  21. data/lib/mina/extras/redis.rb +9 -0
  22. data/lib/mina/extras/system.rb +11 -0
  23. data/lib/mina/extras/templates/global.god.erb +23 -0
  24. data/lib/mina/extras/templates/god.sh.erb +39 -0
  25. data/lib/mina/extras/templates/nginx.conf.erb +33 -0
  26. data/lib/mina/extras/templates/unicorn.god.erb +69 -0
  27. data/lib/mina/extras/templates/unicorn.rb.erb +41 -0
  28. data/lib/mina/extras/templates/unicorn_init.sh.erb +66 -0
  29. data/lib/mina/extras/ubuntu.rb +103 -0
  30. data/lib/mina/extras/unicorn.rb +86 -0
  31. data/lib/mina/extras/version.rb +5 -0
  32. data/lib/mina/extras.rb +10 -0
  33. data/mina-rails-tools.gemspec +33 -0
  34. data/samples/osx/config/deploy/shared/global.god.erb +23 -0
  35. data/samples/osx/config/deploy/shared/god.sh.erb +41 -0
  36. data/samples/osx/config/deploy.rb +46 -0
  37. data/samples/osx/prepare.sh +7 -0
  38. data/samples/ubuntu/config/deploy/shared/global.god.erb +23 -0
  39. data/samples/ubuntu/config/deploy/shared/god.sh.erb +41 -0
  40. data/samples/ubuntu/config/deploy.rb +51 -0
  41. data/samples/ubuntu/prepare.sh +24 -0
  42. metadata +127 -0
@@ -0,0 +1,63 @@
1
+ require "mina/extras"
2
+
3
+ namespace :rainbows do
4
+
5
+ desc "Rainbows: Parses config file and uploads it to server"
6
+ task :upload => [:'upload:config', :'upload:script']
7
+
8
+ namespace :upload do
9
+ desc "Parses Rainbows config file and uploads it to server"
10
+ task :config do
11
+ upload_shared_file("rainbows.rb")
12
+ end
13
+
14
+ desc "Parses Rainbows control script file and uploads it to server"
15
+ task :script do
16
+ upload_shared_file("rainbows_init.sh")
17
+ end
18
+ end
19
+
20
+ desc "Unicron: startup"
21
+ task :defaults do
22
+ invoke :sudo
23
+ queue echo_cmd %{sudo chown root:root /etc/init.d/rainbows-#{app!}}
24
+ queue echo_cmd %{sudo chmod u+x /etc/init.d/rainbows-#{app!}}
25
+ queue echo_cmd "sudo update-rc.d rainbows-#{app!} defaults"
26
+ end
27
+
28
+ task :log do
29
+ queue %{tail -f "#{deploy_to!}/#{shared_path}/log/rainbows.log" -n 200}
30
+ end
31
+
32
+ task :err_log do
33
+ queue %{tail -f "#{deploy_to!}/#{shared_path}/log/rainbows.error.log" -n 200}
34
+ end
35
+
36
+ desc "Rainbows: Link script files"
37
+ task :link do
38
+ invoke :sudo
39
+ extra_echo("Rainbows: Link script file")
40
+ queue echo_cmd %{sudo cp '#{deploy_to}/shared/config/rainbows_init.sh' '/etc/init.d/rainbows-#{app!}'}
41
+
42
+ invoke :"rainbows:defaults"
43
+ end
44
+
45
+ desc "Start rainbows"
46
+ task :start do
47
+ extra_echo("Rainbows: Start")
48
+ queue echo_cmd "/etc/init.d/rainbows-#{app!} start"
49
+ end
50
+
51
+ desc "Stop rainbows"
52
+ task :stop do
53
+ extra_echo("Rainbows: Stop")
54
+ queue echo_cmd "/etc/init.d/rainbows-#{app!} stop"
55
+ end
56
+
57
+ desc "Restart rainbows using 'upgrade'"
58
+ task :restart do
59
+ extra_echo("Rainbows: Restart")
60
+ queue echo_cmd "/etc/init.d/rainbows-#{app!} upgrade"
61
+ end
62
+
63
+ end
@@ -0,0 +1,9 @@
1
+ namespace :redis do
2
+
3
+ desc "Connect to redis"
4
+ task :connect do
5
+ extra_echo "Redis: connect"
6
+ queue "redis-cli"
7
+ end
8
+
9
+ end
@@ -0,0 +1,11 @@
1
+ task :health do
2
+ queue 'ps aux | grep -v grep | grep -v bash | grep -e "bin\/god" -e "unicorn_rails" -e "mongod" -e "nginx" -e "redis" -e "STAT START TIME COMMAND" -e "bash"'
3
+ end
4
+
5
+ task :uptime do
6
+ queue 'uptime'
7
+ end
8
+
9
+ task :gp do
10
+ queue echo_cmd "ps aux | grep #{ENV["p"]}"
11
+ end
@@ -0,0 +1,23 @@
1
+ #God::Contacts::Email.defaults do |d|
2
+ # d.from_email = 'god@test'
3
+ # d.from_name = 'God'
4
+ # d.delivery_method = :sendmail
5
+ #end
6
+
7
+ #God.contact(:email) do |c|
8
+ # c.name = 'Foo Bar'
9
+ # c.group = 'me'
10
+ # c.to_email = 'admin@test.com'
11
+ #end
12
+
13
+ # God::Contacts::Jabber.defaults do |d|
14
+ # d.host = "jabber.synbioz.com"
15
+ # d.from_jid = "foo@synbioz.com"
16
+ # d.password = "bar"
17
+ # end
18
+ #
19
+ # God.contact(:jabber) do |c|
20
+ # d.to_jid = "alfuken@gmail.com"
21
+ # end
22
+
23
+ God.load "<%= god_path %>/conf/*.god"
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # God
4
+ #
5
+ # chkconfig: - 85 15
6
+ # description: start, stop, restart, status for God
7
+ #
8
+
9
+ RETVAL=0
10
+ GOD_PID="<%= god_pid_path %>/god.pid"
11
+ GOD_LOG="<%= god_log_path %>/god.log"
12
+ GOD_CONF="<%= god_path %>/global.god"
13
+ GOD_BIN="/usr/local/bin/god"
14
+
15
+ case "$1" in
16
+ start)
17
+ $GOD_BIN -c $GOD_CONF -P $GOD_PID -l $GOD_LOG
18
+ RETVAL=$?
19
+ ;;
20
+ stop)
21
+ kill `cat $GOD_PID`
22
+ RETVAL=$?
23
+ ;;
24
+ restart)
25
+ kill `cat $GOD_PID`
26
+ $GOD_BIN -c $GOD_CONF -P $GOD_PID -l $GOD_LOG
27
+ RETVAL=$?
28
+ ;;
29
+ status)
30
+ $GOD_BIN status
31
+ RETVAL=$?
32
+ ;;
33
+ *)
34
+ echo "Usage: god {start|stop|restart|status}"
35
+ exit 1
36
+ ;;
37
+ esac
38
+
39
+ exit $RETVAL
@@ -0,0 +1,33 @@
1
+ upstream unicorn-<%= app %> {
2
+ server unix:/tmp/unicorn.<%= app! %>.socket fail_timeout=0;
3
+ }
4
+
5
+ # <%= app %> Server
6
+ server {
7
+ listen <%= nginx_port %><%= ' default' if nginx_default %>;
8
+ server_name <%= domain %>;
9
+
10
+ root <%= deploy_to %>/<%= current_path %>/public;
11
+
12
+ gzip on;
13
+ gzip_types text/plain text/xml application/xml application/xml+rss
14
+ text/css text/javascript application/javascript application/json;
15
+
16
+ try_files $uri/index.html $uri @unicorn;
17
+ location @unicorn {
18
+ proxy_pass http://unicorn-<%= app! %>;
19
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
20
+ proxy_set_header X-Real-IP $remote_addr;
21
+ proxy_set_header Host $http_host;
22
+ proxy_redirect off;
23
+ proxy_intercept_errors on;
24
+ expires -1;
25
+ }
26
+
27
+ error_page 500 502 503 504 /500.html;
28
+ error_page 403 /403.html;
29
+ error_page 404 /404.html;
30
+
31
+ client_max_body_size 50M;
32
+ keepalive_timeout 10;
33
+ }
@@ -0,0 +1,69 @@
1
+ # http://unicorn.bogomips.org/SIGNALS.html
2
+
3
+ rails_env = "production"
4
+ rails_root = "<%= "#{deploy_to!}/#{current_path!}" %>"
5
+ shared_root = "<%= "#{deploy_to!}/#{shared_path!}" %>"
6
+ config = "#{shared_root}/unicorn.rb"
7
+ unicorn_pid = "<%= "#{deploy_to!}/#{shared_path!}/pids/unicorn.pid" %>"
8
+
9
+ # God.pid_file_directory = File.join("<%= deploy_to! %>", "shared", "pids")
10
+ God.watch do |w|
11
+ w.name = "unicorn_<%= "#{app!}" %>"
12
+ w.interval = 30.seconds # default
13
+
14
+ w.start = "cd #{rails_root} && /usr/local/bin/bundle exec unicorn_rails -D -c #{config} -E #{rails_env}"
15
+
16
+ # QUIT gracefully shuts down workers
17
+ w.stop = "kill -QUIT `cat #{unicorn_pid}`"
18
+
19
+ # USR2 causes the master to re-create itself and spawn a new worker pool
20
+ w.restart = "kill -USR2 `cat #{unicorn_pid}`"
21
+
22
+ w.start_grace = 30.seconds
23
+ w.restart_grace = 30.seconds
24
+ # w.pid_file = "#{rails_root}/tmp/pids/unicorn.pid"
25
+ w.pid_file = unicorn_pid
26
+
27
+ w.uid = "<%= user! %>"
28
+ w.gid = "<%= group! %>"
29
+
30
+ w.behavior(:clean_pid_file)
31
+
32
+ w.start_if do |start|
33
+ start.condition(:process_running) do |c|
34
+ c.interval = 10.seconds
35
+ c.running = false
36
+ end
37
+ end
38
+
39
+ w.restart_if do |restart|
40
+ restart.condition(:memory_usage) do |c|
41
+ c.above = 300.megabytes
42
+ c.times = [3, 5] # 3 out of 5 intervals
43
+ end
44
+
45
+ restart.condition(:cpu_usage) do |c|
46
+ c.above = 80.percent
47
+ c.times = 5
48
+ end
49
+ end
50
+
51
+ # lifecycle
52
+ w.lifecycle do |on|
53
+ on.condition(:flapping) do |c|
54
+ c.to_state = [:start, :restart]
55
+ c.times = 5
56
+ c.within = 5.minute
57
+ c.transition = :unmonitored
58
+ c.retry_in = 10.minutes
59
+ c.retry_times = 5
60
+ c.retry_within = 2.hours
61
+ end
62
+ end
63
+
64
+ # w.transition(:up, :start) do |on|
65
+ # on.condition(:process_exits) do |c|
66
+ # c.notify = 'me'
67
+ # end
68
+ # end
69
+ end
@@ -0,0 +1,41 @@
1
+ rails_root = "<%= "#{deploy_to!}/#{current_path!}" %>"
2
+ rails_env = "<%= rails_env || "production" %>"
3
+ pid_file = "<%= "#{deploy_to!}/#{shared_path}" %>/pids/unicorn.pid"
4
+ socket_file= "/tmp/unicorn.<%= app! %>.socket"
5
+ log_file = "<%= "#{deploy_to!}/#{shared_path}" %>/log/unicorn.log"
6
+ err_log = "<%= "#{deploy_to!}/#{shared_path}" %>/log/unicorn.error.log"
7
+ old_pid = pid_file + '.oldbin'
8
+
9
+ timeout 60
10
+ worker_processes <%= unicorn_workers || 2 %>
11
+
12
+ # Listen on a Unix data socket
13
+ listen socket_file, :backlog => 2048
14
+ pid pid_file
15
+
16
+ stderr_path err_log
17
+ stdout_path log_file
18
+
19
+ preload_app true
20
+
21
+ GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=)
22
+
23
+ before_exec do |server|
24
+ ENV["BUNDLE_GEMFILE"] = "#{rails_root}/Gemfile"
25
+ end
26
+
27
+ before_fork do |server, worker|
28
+ # Using this method we get 0 downtime deploys.
29
+ if File.exists?(old_pid) && server.pid != old_pid
30
+ begin
31
+ Process.kill("QUIT", File.read(old_pid).to_i)
32
+ rescue Errno::ENOENT, Errno::ESRCH
33
+ # someone else did our job for us
34
+ end
35
+ end
36
+ end
37
+
38
+ after_fork do |server, worker|
39
+ child_pid = server.config[:pid].sub('.pid', ".#{worker.nr}.pid")
40
+ system("echo #{Process.pid} > #{child_pid}")
41
+ end
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ AS_USER=deploy
5
+ TIMEOUT=60
6
+ APP_ROOT="<%= "#{deploy_to!}" %>"
7
+ PID_PATH="<%= "#{deploy_to!}/#{shared_path!}/pids" %>"
8
+ PID="$PID_PATH/unicorn.pid"
9
+ ENVIRONMENT="<%= rails_env || "production" %>"
10
+ CONFIG="$APP_ROOT/<%= "#{shared_path!}/unicorn.rb" %>"
11
+ UARGS="-D -c $CONFIG -E $ENVIRONMENT"
12
+ CMD="cd $APP_ROOT/<%= current_path! %> && bundle exec unicorn_rails $UARGS"
13
+ action="$1"
14
+ #set -u
15
+
16
+ old_pid="$PID.oldbin"
17
+
18
+ sig () {
19
+ test -s "$PID" && kill -$1 `cat $PID`
20
+ }
21
+
22
+ oldsig () {
23
+ test -s $old_pid && kill -$1 `cat $old_pid`
24
+ }
25
+
26
+ workersig () {
27
+ workerpid="$PID_PATH/unicorn.$2.pid"
28
+ test -s "$workerpid" && kill -$1 `cat $workerpid`
29
+ }
30
+
31
+ case $action in
32
+ start)
33
+ sig 0 && echo >&2 "Already running" && exit 0
34
+ su -c "$CMD" - $AS_USER && echo "start ok" && exit 0
35
+ ;;
36
+ stop)
37
+ sig QUIT && echo "stop ok" && exit 0
38
+ echo >&2 "Not running"
39
+ ;;
40
+ force-stop)
41
+ sig TERM && echo "force-stop ok" && exit 0
42
+ echo >&2 "Not running"
43
+ ;;
44
+ restart|reload)
45
+ sig HUP && echo "reloaded OK" && exit 0
46
+ echo >&2 "Error: start $CMD instead"
47
+ su -c "$CMD" - $AS_USER
48
+ ;;
49
+ upgrade)
50
+ sig USR2 && echo Upgraded && exit 0
51
+ echo >&2 "Error: start $CMD instead"
52
+ su -c "$CMD" - $AS_USER
53
+ ;;
54
+ kill_worker)
55
+ workersig QUIT $2 && exit 0
56
+ echo >&2 "Worker not running"
57
+ ;;
58
+
59
+ reopen-logs)
60
+ sig USR1
61
+ ;;
62
+ *)
63
+ echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
64
+ exit 1
65
+ ;;
66
+ esac
@@ -0,0 +1,103 @@
1
+ require "mina/extras"
2
+ require "mina/extras/local"
3
+ require "mina/extras/apt"
4
+ require "mina/extras/gem"
5
+
6
+ set :platform, :ubuntu
7
+
8
+ def add_user(u)
9
+ invoke :sudo
10
+ queue "adduser #{u}"
11
+ end
12
+
13
+ namespace :ubuntu do
14
+
15
+ task :before_check do
16
+ to :before_hook do
17
+ invoke :"local:check_ssh_key"
18
+ end
19
+ end
20
+
21
+ namespace :remote do
22
+ task :setup do
23
+ invoke :sudo
24
+ queue echo_cmd %{mkdir -p ~/.ssh}
25
+ append_template(ssh_pub_key_path, ".ssh/authorized_keys")
26
+ end
27
+
28
+ task :add_deploy do
29
+ invoke :sudo
30
+ add_user("deploy")
31
+ queue "sudo usermod -a -G www-data deploy"
32
+
33
+ queue echo_cmd "sudo mkdir -p /home/deploy/.ssh"
34
+ queue echo_cmd "sudo touch /home/deploy/.ssh/authorized_keys"
35
+ append_template(ssh_pub_key_path, "/home/deploy/.ssh/authorized_keys")
36
+ queue echo_cmd "sudo chown -R deploy:deploy /home/deploy/.ssh"
37
+ queue echo_cmd "sudo chmod 664 /home/deploy/.ssh/authorized_keys"
38
+ end
39
+
40
+ task :add_ubuntu do
41
+ invoke :sudo
42
+ add_user("ubuntu")
43
+ queue echo_cmd "sudo groupadd admin"
44
+ queue echo_cmd "sudo usermod -a -G admin ubuntu"
45
+ queue echo_cmd "sudo mkdir -p /home/ubuntu/.ssh"
46
+ queue echo_cmd "sudo touch /home/ubuntu/.ssh/authorized_keys"
47
+ append_template(ssh_pub_key_path, "/home/ubuntu/.ssh/authorized_keys")
48
+ queue echo_cmd "sudo chown -R ubuntu:ubuntu /home/ubuntu/.ssh"
49
+ queue echo_cmd "sudo chmod 664 /home/ubuntu/.ssh/authorized_keys"
50
+ end
51
+ end
52
+
53
+ namespace :locale do
54
+ task :setup do
55
+ invoke :sudo
56
+ queue echo_cmd %{sudo locale-gen en_US en_US.UTF8}
57
+ queue echo_cmd %{sudo sh -c "echo 'LC_ALL=\"en_US.utf8\"' >> /etc/environment"}
58
+ end
59
+ end
60
+
61
+ namespace :install do
62
+ task :prepare do
63
+ invoke :"apt:get:update"
64
+ invoke :"apt:get:build-essential"
65
+ invoke :"apt:get:git"
66
+ end
67
+
68
+ task :ruby do
69
+ in_directory '/tmp' do
70
+ queue "wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz"
71
+ queue "tar xf ruby-2.2.3.tar.gz"
72
+ end
73
+
74
+ in_directory '/tmp/ruby-2.2.3' do
75
+ queue "./configure"
76
+ queue "make"
77
+ queue "sudo make install"
78
+ queue "sudo ln -s /usr/local/bin/ruby /usr/bin/ruby"
79
+ end
80
+ end
81
+
82
+ task :rubygems do
83
+ in_directory '/tmp' do
84
+ queue "wget http://rubygems.org/rubygems/rubygems-2.4.8.tgz"
85
+ queue "tar xf rubygems-2.4.8.tgz"
86
+ end
87
+
88
+ in_directory '/tmp/rubygems-2.4.8' do
89
+ queue "sudo ruby setup.rb install"
90
+ end
91
+ end
92
+
93
+ task :www do
94
+ invoke :sudo
95
+ queue echo_cmd "sudo mkdir -p /var/www"
96
+ queue echo_cmd "sudo chown -R deploy:www-data /var/www"
97
+ end
98
+
99
+ task :ssh_key do
100
+ queue "ssh-keygen -t rsa"
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,86 @@
1
+ require "mina/extras"
2
+
3
+ set :use_unicorn, true
4
+
5
+ namespace :unicorn do
6
+
7
+ desc "Unicorn: Parses config file and uploads it to server"
8
+ task :upload => [:'upload:config', :'upload:script']
9
+
10
+ namespace :upload do
11
+ desc "Parses Unicorn config file and uploads it to server"
12
+ task :config do
13
+ upload_shared_file("unicorn.rb")
14
+ end
15
+
16
+ desc "Parses Unicorn control script file and uploads it to server"
17
+ task :script do
18
+ upload_shared_file("unicorn_init.sh")
19
+ end
20
+ end
21
+
22
+ desc "Unicron: startup"
23
+ task :defaults do
24
+ invoke :sudo
25
+ queue echo_cmd "sudo update-rc.d unicorn-#{app!} defaults"
26
+ end
27
+
28
+ namespace :god do
29
+ task :upload do
30
+ upload_shared_file("unicorn.god")
31
+ end
32
+
33
+ task :link do
34
+ invoke :sudo
35
+ queue echo_cmd %{sudo cp -rf #{deploy_to}/#{shared_path}/unicorn.god #{god_path}/conf/unicorn-#{app!}.god}
36
+ invoke :"god:restart"
37
+ end
38
+
39
+ task :start do
40
+ invoke :sudo
41
+ queue echo_cmd %{sudo god start unicorn_#{app!}}
42
+ end
43
+
44
+ task :stop do
45
+ invoke :sudo
46
+ queue echo_cmd %{sudo god stop unicorn_#{app!}}
47
+ end
48
+ end
49
+
50
+ task :log do
51
+ queue %{tail -f "#{deploy_to!}/#{shared_path}/log/unicorn.log" -n 200}
52
+ end
53
+
54
+ task :err_log do
55
+ queue %{tail -f "#{deploy_to!}/#{shared_path}/log/unicorn.error.log" -n 200}
56
+ end
57
+
58
+ desc "Unicorn: Link script files"
59
+ task :link do
60
+ invoke :sudo
61
+ extra_echo("Unicorn: Link script file")
62
+ queue echo_cmd %{sudo cp '#{deploy_to}/shared/unicorn_init.sh' '/etc/init.d/unicorn-#{app!}'}
63
+ queue echo_cmd %{sudo chown #{user!}:#{group!} /etc/init.d/unicorn-#{app!}}
64
+ queue echo_cmd %{sudo chmod u+x /etc/init.d/unicorn-#{app!}}
65
+ # invoke :"unicorn:defaults"
66
+ end
67
+
68
+ desc "Start unicorn"
69
+ task :start do
70
+ extra_echo("Unicorn: Start")
71
+ queue echo_cmd "/etc/init.d/unicorn-#{app!} start"
72
+ end
73
+
74
+ desc "Stop unicorn"
75
+ task :stop do
76
+ extra_echo("Unicorn: Stop")
77
+ queue echo_cmd "/etc/init.d/unicorn-#{app!} stop"
78
+ end
79
+
80
+ desc "Restart unicorn using 'upgrade'"
81
+ task :restart do
82
+ extra_echo("Unicorn: Restart")
83
+ queue echo_cmd "/etc/init.d/unicorn-#{app!} upgrade"
84
+ end
85
+
86
+ end
@@ -0,0 +1,5 @@
1
+ module Mina
2
+ module Extras
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ require "mina/extras/version"
2
+ require "mina/extras/local"
3
+ require "mina/extras/methods"
4
+ require "mina/extras/system"
5
+ require "mina/extras/extra"
6
+
7
+ module Mina
8
+ module Extras
9
+ end
10
+ end
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mina/extras/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mina-rails-tools"
8
+ spec.version = Mina::Extras::VERSION
9
+ spec.authors = ["Joey Lin"]
10
+ spec.email = ["joeyoooooo@gmail.com"]
11
+
12
+ spec.summary = %q{Extra deploy scripts for rails}
13
+ spec.description = %q{}
14
+ spec.homepage = "https://github.com/andyss/mina-rails-tools"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # delete this section to allow pushing this gem to any host.
19
+ if spec.respond_to?(:metadata)
20
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
+ else
22
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.10"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "mina", "0.3.7"
33
+ end
@@ -0,0 +1,23 @@
1
+ #God::Contacts::Email.defaults do |d|
2
+ # d.from_email = 'god@test'
3
+ # d.from_name = 'God'
4
+ # d.delivery_method = :sendmail
5
+ #end
6
+
7
+ #God.contact(:email) do |c|
8
+ # c.name = 'Foo Bar'
9
+ # c.group = 'me'
10
+ # c.to_email = 'admin@test.com'
11
+ #end
12
+
13
+ # God::Contacts::Jabber.defaults do |d|
14
+ # d.host = "jabber.synbioz.com"
15
+ # d.from_jid = "foo@synbioz.com"
16
+ # d.password = "bar"
17
+ # end
18
+ #
19
+ # God.contact(:jabber) do |c|
20
+ # d.to_jid = "alfuken@gmail.com"
21
+ # end
22
+
23
+ God.load "<%= god_path %>/conf/*.god"
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # God
4
+ #
5
+ # chkconfig: - 85 15
6
+ # description: start, stop, restart, status for God
7
+ #
8
+
9
+ RETVAL=0
10
+ GOD_PID="<%= god_pid_path %>/god.pid"
11
+ GOD_LOG="<%= god_log_path %>/god.log"
12
+ GOD_CONF="<%= god_path %>/global.god"
13
+ GOD_BIN="god"
14
+
15
+ case "$1" in
16
+ start)
17
+ $GOD_BIN -P $GOD_PID -l $GOD_LOG
18
+ $GOD_BIN load $GOD_CONF
19
+ RETVAL=$?
20
+ ;;
21
+ stop)
22
+ kill `cat $GOD_PID`
23
+ RETVAL=$?
24
+ ;;
25
+ restart)
26
+ kill `cat $GOD_PID`
27
+ $GOD_BIN -P $GOD_PID -l $GOD_LOG
28
+ $GOD_BIN load $GOD_CONF
29
+ RETVAL=$?
30
+ ;;
31
+ status)
32
+ $GOD_BIN status
33
+ RETVAL=$?
34
+ ;;
35
+ *)
36
+ echo "Usage: god {start|stop|restart|status}"
37
+ exit 1
38
+ ;;
39
+ esac
40
+
41
+ exit $RETVAL