mina-extras 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d25ae529d9db05f253bd86b426f12ce080a7094a
4
+ data.tar.gz: d9d47dd78b70b7ff08a12dd11dbe09f0de0376af
5
+ SHA512:
6
+ metadata.gz: c441081e9f5d83d3feaa3ce01a676a60cf509f2de05a0730e42a665364a0eae31fbbfcdb637f73aa065214e220a66bf140f60bf15159bd21fc412870d9be3f10
7
+ data.tar.gz: c5dde9251553e8de290226001745ce531266cbd8db7d537bd64a0f11fb7be0e09764bcabb8fe42ad64bb40a4f5aa4b907c65fcf6be62316c7712b278ae38a6fa
@@ -0,0 +1 @@
1
+ set :repository, %x[git config --get remote.origin.url].strip
@@ -0,0 +1 @@
1
+ set :current_git_branch, %x[git rev-parse --abbrev-ref HEAD].strip
@@ -0,0 +1,100 @@
1
+ # # Helpers: Exec helpers
2
+ # Provides `pretty_system` which Mina uses to parse SSH output, and delegate to
3
+ # the appropriate Output helper.
4
+
5
+ module Mina
6
+ module ExecHelpers
7
+
8
+ # ### pretty_system
9
+ # __Internal:__ A pretty version of the default `#system` commands, but
10
+ # indents and puts color.
11
+ #
12
+ # Returns the exit code in integer form.
13
+ #
14
+ def pretty_system(code)
15
+ require 'shellwords'
16
+ cmds = Shellwords.shellsplit(code)
17
+ coathooks = 0
18
+
19
+ status =
20
+ Tools.popen4(*cmds) do |pid, i, o, e|
21
+ # Handle `^C`.
22
+ trap("INT") { Sys.handle_sigint(coathooks += 1, pid, self) }
23
+
24
+ # __In the background,__ make stdin passthru, and stream stderr.
25
+ th_err = Sys.stream_stderr!(e) { |str| print_stderr str }
26
+ th_in = Sys.stream_stdin! { |chr| i.putc chr }
27
+
28
+ # __In the foreground,__ stream stdout to the output helper.
29
+ Sys.stream_stdout(o) { |ch| print_char ch }
30
+
31
+ th_err.join
32
+ th_in.terminate
33
+ end
34
+
35
+ status.exitstatus
36
+ end
37
+
38
+ # ## Private methods
39
+ # Delegate functions, mostly.
40
+
41
+ module Sys
42
+
43
+ extend self
44
+
45
+ # ### Sys.handle_sigint!
46
+ # Called when a `^C` is pressed. The param `count` is how many times it's
47
+ # been pressed since. Returns nothing.
48
+
49
+ def handle_sigint(count, pid, this)
50
+ puts ""
51
+ if count > 1
52
+ this.print_status "Mina: SIGINT received again. Force quitting..."
53
+ Process.kill "KILL", pid
54
+ else
55
+ this.print_status "Mina: SIGINT received."
56
+ Process.kill "TERM", pid
57
+ end
58
+ end
59
+
60
+ # ### Sys.stream_stderr!
61
+ # __Internal:__ Read from stderr stream `err` *[0]*, supress expected
62
+ # errors *[1]*, and yield. Returns the PID.
63
+
64
+ def stream_stderr!(err, &blk)
65
+ Thread.new do
66
+ while str = err.gets #[0]
67
+ next if str.include? "bash: no job control in this shell" #[1]
68
+ next if str.include? "stdin is not a terminal"
69
+
70
+ yield str.strip #[2]
71
+ end
72
+ end
73
+ end
74
+
75
+ # ### Sys.stream_stdin!
76
+ # __Internal:__ Read from the real stdin stream and pass it onto the given
77
+ # stdin stream `i`. Returns the PID.
78
+
79
+ def stream_stdin!(&blk)
80
+ Thread.new do
81
+ while (char = STDIN.getbyte rescue nil)
82
+ yield char if char
83
+ end
84
+ end
85
+ end
86
+
87
+ # ### Sys.stream_stdout
88
+ # __Internal:__ Read from given stdout stream `o` and delegate it to the
89
+ # output helper.
90
+
91
+ def stream_stdout(o, &blk)
92
+ while str = o.getc
93
+ yield str
94
+ end
95
+ end
96
+
97
+ end
98
+
99
+ end
100
+ end
@@ -0,0 +1,38 @@
1
+ namespace :puma do
2
+ task :config do
3
+ cmd_prefix = "cd #{deploy_to}/#{current_path} ; "
4
+ cmd_prefix += "RAILS_ENV=#{rails_env!} NEW_RELIC_DISPATCHER=puma bundle exec"
5
+ set :puma_start_cmd, "#{cmd_prefix} puma -C #{File.join(deploy_to,current_path,'config','puma.rb')}"
6
+ set :puma_stop_cmd, "#{cmd_prefix} pumactl -S #{deploy_to}/#{shared_path}/sockets/puma.state stop"
7
+ set :puma_restart_cmd, "#{cmd_prefix} pumactl -S #{deploy_to}/#{shared_path}/sockets/puma.state phased-restart"
8
+ end
9
+
10
+ desc 'Start puma'
11
+ task :start => [:config, :environment] do
12
+ queue %{
13
+ echo "-----> Starting puma"
14
+ #{echo_cmd puma_start_cmd}
15
+ }
16
+ end
17
+
18
+ desc 'Stop puma'
19
+ task :stop => [:config, :environment] do
20
+ queue %{
21
+ echo "-----> Stopping puma"
22
+ #{echo_cmd puma_stop_cmd}
23
+ }
24
+ end
25
+
26
+ desc 'Restart puma'
27
+ task :restart => [:config, :environment] do
28
+ queue %{
29
+ if [ ! -f "#{deploy_to}/#{shared_path}/sockets/puma.state" ]; then
30
+ echo "-----> Starting puma"
31
+ #{echo_cmd puma_start_cmd}
32
+ else
33
+ echo "-----> Restarting puma"
34
+ #{echo_cmd puma_restart_cmd}
35
+ fi
36
+ }
37
+ end
38
+ end
@@ -0,0 +1,8 @@
1
+ app_root = %x[pwd].strip
2
+
3
+ set :current_ruby, File.read("#{app_root}/.ruby-version").strip
4
+ set :current_gemset, File.read("#{app_root}/.ruby-gemset").strip
5
+
6
+ task :'rvm:use:current' do
7
+ invoke :"rvm:use[#{current_ruby!}@#{current_gemset!}]"
8
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mina-extras
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jan Berdajs
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mina
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Provides extra Mina deploy tasks for Puma, RVM, Faye.
28
+ email: mrbrdo@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/mina-extras/auto-repository.rb
34
+ - lib/mina-extras/git.rb
35
+ - lib/mina-extras/jruby-patch.rb
36
+ - lib/mina-extras/puma.rb
37
+ - lib/mina-extras/rvm.rb
38
+ homepage: https://github.com/mrbrdo/mina-extras
39
+ licenses:
40
+ - MIT
41
+ metadata: {}
42
+ post_install_message:
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubyforge_project:
58
+ rubygems_version: 2.0.4
59
+ signing_key:
60
+ specification_version: 4
61
+ summary: extra mina deploy tasks
62
+ test_files: []