mina-rails-tools 0.1.0

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.
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