visionbundles 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.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +103 -0
- data/Rakefile +1 -0
- data/lib/visionbundles/base.rb +44 -0
- data/lib/visionbundles/recipes/db.rb +23 -0
- data/lib/visionbundles/recipes/dev.rb +16 -0
- data/lib/visionbundles/recipes/nginx.rb +25 -0
- data/lib/visionbundles/recipes/puma.rb +30 -0
- data/lib/visionbundles/recipes/sidekiq.rb +10 -0
- data/lib/visionbundles/templates/nginx/nginx.conf.erb +50 -0
- data/lib/visionbundles/templates/puma/config.erb +173 -0
- data/lib/visionbundles/version.rb +3 -0
- data/lib/visionbundles.rb +2 -0
- data/visionbundles.gemspec +26 -0
- metadata +73 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 67412ca6dbdc960b75b67fa29105fc414b34e272
|
4
|
+
data.tar.gz: de90b6eb913091f29ebca51392e57086f3cb3701
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 944e53ed1f29cc6cbe5e43286a5314d5fd3d9b9de0c088c87e3daa151b387ec17038f2a50f287bda9b7e3ea56f80ca6e66914d2615c4fbfe7029729649ca779b
|
7
|
+
data.tar.gz: ba53c9e616b22f45d059365286540fa7d65a34c60d4ee50c62f3ea3d31b59990d0b88097b98973ecece6bb10769e5759aa7e6dce89299ed834dc56a6db62a68e
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
## Summary
|
2
|
+
|
3
|
+
This gem have basic deploy flow tasks for capistrano 2.x, that include templates (nginx / puma / sidekiq). you don't have to write deploy tasks yourself, just configuare it.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
|
8
|
+
in your `Gemfile`
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
group :development do
|
12
|
+
gem 'capistrano', '~> 2.15.5'
|
13
|
+
gem 'visionbundles', path: '../demrec'
|
14
|
+
end
|
15
|
+
```
|
16
|
+
|
17
|
+
then run `bundle install`
|
18
|
+
|
19
|
+
|
20
|
+
## deploy.rb
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
# deploy.rb
|
24
|
+
|
25
|
+
# add this line on top
|
26
|
+
require 'visionbundles'
|
27
|
+
|
28
|
+
# setup recipes what your need (nginx, puma, db, dev)
|
29
|
+
include_recipes :nginx, :puma, :db, :dev
|
30
|
+
```
|
31
|
+
|
32
|
+
once you include recipes like `db` `nginx` `puma` it will hook tasks in your deploy flow, you just need run `cap deploy:setup` at first, it will setup all you need. but you have to config your recipes setting.
|
33
|
+
|
34
|
+
|
35
|
+
## Recipes configurations
|
36
|
+
|
37
|
+
### nginx
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
# Nginx (role: :web)
|
41
|
+
set :nginx_vhost_domain, 'your.domain' # default is _, means all
|
42
|
+
set :nginx_upstream_via_sock_file, false, # if your app server bind a unix socket file, you need setup to true
|
43
|
+
|
44
|
+
set :nginx_app_servers, ['127.0.0.1:9290'] # your app server ip with port
|
45
|
+
```
|
46
|
+
|
47
|
+
`cap nginx:start`
|
48
|
+
`cap nginx:stop`
|
49
|
+
`cap nginx:restart`
|
50
|
+
|
51
|
+
|
52
|
+
### puma (role: :app)
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
# Puma
|
56
|
+
set :puma_bind_for, :tcp # default is 'sock_file'
|
57
|
+
set :puma_bind_to, '127.0.0.1' # default is '0.0.0.0'
|
58
|
+
set :puma_bind_port, '9290' # default is 9292
|
59
|
+
set :puma_thread_min, 32
|
60
|
+
set :puma_thread_max, 32
|
61
|
+
set :puma_workers, 3
|
62
|
+
```
|
63
|
+
|
64
|
+
`cap puma:start`
|
65
|
+
`cap puma:stop`
|
66
|
+
`cap puma:restart`
|
67
|
+
|
68
|
+
|
69
|
+
### db (role: :app)
|
70
|
+
|
71
|
+
If you include this recipe, when you run `cap deploy:setup` will copy database config file from your project `config/database.example.yml` to server site shared path.
|
72
|
+
|
73
|
+
If database config file exists in remote server, will not replace. so if you change nginx / puma configuration and you want to reset again, you can run `cap deploy:setup` again.
|
74
|
+
|
75
|
+
### sidekiq (role: :workers)
|
76
|
+
|
77
|
+
`cap sidekiq:start`
|
78
|
+
`cap sidekiq:stop`
|
79
|
+
`cap sidekiq:restart`
|
80
|
+
|
81
|
+
P.S this task is not test.
|
82
|
+
|
83
|
+
|
84
|
+
### dev (role: :app)
|
85
|
+
|
86
|
+
This task provide a command `cap dev:build`, it will invoke tasks `tmp:clear` `log:clear` `db:drop` `db:create` `db:migrate` `db:seed` on remote server.
|
87
|
+
|
88
|
+
when you run this command, you have to type `Y` to confirm that you really want to run it.
|
89
|
+
|
90
|
+
|
91
|
+
## Other tools
|
92
|
+
|
93
|
+
[ubuntu-rails-app-installer](https://github.com/afunction/ubuntu-rails-app-installer) is a server tool for install basic rails production environment and this script write on `shellscript`, you can use it to install nginx, percona database, basic secure setting, firewall, rails deploy user ... etc.
|
94
|
+
|
95
|
+
|
96
|
+
## Contribution
|
97
|
+
|
98
|
+
Just send PR to me.
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'colorize'
|
3
|
+
if defined?(Capistrano)
|
4
|
+
def from_template(file)
|
5
|
+
abs_path = File.join(File.dirname(__FILE__), file)
|
6
|
+
template = File.read(abs_path)
|
7
|
+
ERB.new(template).result(binding)
|
8
|
+
end
|
9
|
+
|
10
|
+
def template(erb_source, to_dir, filename)
|
11
|
+
mkdir(to_dir)
|
12
|
+
compiled_file = "#{to_dir}/#{filename}"
|
13
|
+
put from_template(erb_source), compiled_file
|
14
|
+
end
|
15
|
+
|
16
|
+
def remote_file_exists?(path)
|
17
|
+
results = []
|
18
|
+
|
19
|
+
invoke_command("if [ -f '#{path}' ]; then echo -n 'true'; fi") do |ch, stream, out|
|
20
|
+
results << (out == 'true')
|
21
|
+
end
|
22
|
+
|
23
|
+
!results.empty?
|
24
|
+
end
|
25
|
+
|
26
|
+
def mkdir(remote_path)
|
27
|
+
run "mkdir -p #{remote_path}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def include_recipes(*recipes)
|
31
|
+
recipes.each do |recipe|
|
32
|
+
require "#{File.dirname(__FILE__)}/recipes/#{recipe}.rb"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def set_default(name, *args, &block)
|
38
|
+
set(name, *args, &block) unless exists?(name)
|
39
|
+
end
|
40
|
+
|
41
|
+
def current_server
|
42
|
+
capture("echo $CAPISTRANO:HOST$").strip
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
namespace :db do
|
3
|
+
desc "setup database configuration"
|
4
|
+
task :setup, roles: :app do
|
5
|
+
mkdir("#{shared_path}/config")
|
6
|
+
database_setting_path = "#{shared_path}/config/database.yml"
|
7
|
+
if remote_file_exists?(database_setting_path)
|
8
|
+
puts '[SKIP] Database configuration exists already ...'.colorize(:red)
|
9
|
+
else
|
10
|
+
puts '[Shared] Setup database configuration files ...'.colorize(:light_cyan)
|
11
|
+
put File.read("config/database.example.yml"), database_setting_path
|
12
|
+
end
|
13
|
+
end
|
14
|
+
after 'deploy:setup', 'db:setup'
|
15
|
+
|
16
|
+
desc "setup database symlink for every time deploy"
|
17
|
+
task :symlink_config, roles: :app do
|
18
|
+
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
|
19
|
+
end
|
20
|
+
after "deploy:finalize_update", "db:symlink_config"
|
21
|
+
before 'deploy:symlink', 'deploy:migrate'
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
set_default(:dev_sure_danger_command) {
|
3
|
+
Capistrano::CLI.password_prompt "Are you sure run danger command in #{current_server} if yes type Y"
|
4
|
+
}
|
5
|
+
|
6
|
+
namespace :dev do
|
7
|
+
desc "dev:build task"
|
8
|
+
task :build, roles: :app, except: {no_release: true} do
|
9
|
+
if dev_sure_danger_command == 'Y'
|
10
|
+
["tmp:clear", "log:clear", "db:drop", "db:create", "db:migrate", "db:seed"].each do |rake_command|
|
11
|
+
run "cd #{current_path}; RAILS_ENV=#{rails_env} bundle exec rake #{rake_command}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
set_default(:nginx_vhost_domain, '_')
|
3
|
+
set_default(:nginx_app_timeout, nil)
|
4
|
+
set_default(:nginx_upstream_via_sock_file, true)
|
5
|
+
set_default(:nginx_app_servers) {
|
6
|
+
nginx_upstream_via_sock_file ? "/tmp/#{application}.sock" : "127.0.0.1:9292"
|
7
|
+
}
|
8
|
+
|
9
|
+
namespace :nginx do
|
10
|
+
desc "setup nginx vhost config"
|
11
|
+
task :setup, roles: :web do
|
12
|
+
puts '[Nginx] Setup vhost configuration files ...'.colorize(:light_cyan)
|
13
|
+
template "templates/nginx/nginx.conf.erb", "#{shared_path}/nginx", "vhost.conf"
|
14
|
+
sudo "ln -nfs #{shared_path}/nginx/vhost.conf /etc/nginx/sites-enabled/#{application}"
|
15
|
+
end
|
16
|
+
after 'deploy:setup', 'nginx:setup'
|
17
|
+
|
18
|
+
%w[start stop restart reload].each do |command|
|
19
|
+
desc "#{command} nginx server"
|
20
|
+
task command, roles: :web do
|
21
|
+
sudo "service nginx #{command}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
set_default(:puma_bind_for, 'sock_file') # sock_file / tcp
|
3
|
+
set_default(:puma_bind_to, '0.0.0.0')
|
4
|
+
set_default(:puma_bind_port, '9292')
|
5
|
+
set_default(:puma_thread_min, 1)
|
6
|
+
set_default(:puma_thread_max, 16)
|
7
|
+
set_default(:puma_workers, 0)
|
8
|
+
|
9
|
+
namespace :puma do
|
10
|
+
desc "Setup Puma Scripts"
|
11
|
+
task :setup do
|
12
|
+
puts '[Puma] copying the config'.colorize(:light_cyan)
|
13
|
+
template "templates/puma/config.erb", "#{shared_path}/puma", "config.rb"
|
14
|
+
end
|
15
|
+
after 'deploy:setup', 'puma:setup'
|
16
|
+
|
17
|
+
%w[start stop].each do |command|
|
18
|
+
desc "#{command} puma server"
|
19
|
+
task command, roles: :app do
|
20
|
+
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec pumactl -F #{shared_path}/puma/config.rb #{command}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
desc "restart puma server"
|
24
|
+
task "restart", roles: :app do
|
25
|
+
%w(stop start).each do |command|
|
26
|
+
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec pumactl -F #{shared_path}/puma/config.rb #{command}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
namespace :sidekiq do
|
3
|
+
%w[start stop restart killall].each do |command|
|
4
|
+
desc "#{command} sidekiq"
|
5
|
+
task command, roles: :workers, except: {no_release: true} do
|
6
|
+
run "cd #{current_path}/scripts/ && RAILS_ENV=#{rails_env} ./workers.sh #{command}"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
upstream <%= "app_#{application}" %> {
|
2
|
+
<%
|
3
|
+
nginx_timeout_string = ""
|
4
|
+
nginx_timeout_string = unless nginx_app_timeout.nil?
|
5
|
+
"fail_timeout=#{nginx_app_timeout}"
|
6
|
+
end
|
7
|
+
%>
|
8
|
+
|
9
|
+
<% if nginx_upstream_via_sock_file %>
|
10
|
+
server unix:<%= nginx_app_servers %> <%= nginx_timeout_string %>;
|
11
|
+
<% else %>
|
12
|
+
|
13
|
+
<% nginx_app_servers.each do |server| %>
|
14
|
+
server <%= server %> <%= nginx_timeout_string %>;
|
15
|
+
<% end %>
|
16
|
+
<% end %>
|
17
|
+
}
|
18
|
+
|
19
|
+
server {
|
20
|
+
listen 80;
|
21
|
+
server_name <%= nginx_vhost_domain %>;
|
22
|
+
|
23
|
+
root <%= "#{deploy_to}/current/public" %>;
|
24
|
+
|
25
|
+
location ^~ /assets/ {
|
26
|
+
gzip_static on;
|
27
|
+
expires max;
|
28
|
+
add_header Cache-Control public;
|
29
|
+
open_file_cache max=1000 inactive=500s;
|
30
|
+
open_file_cache_valid 600s;
|
31
|
+
open_file_cache_errors on;
|
32
|
+
break;
|
33
|
+
}
|
34
|
+
|
35
|
+
try_files $uri/index.html $uri @puma;
|
36
|
+
|
37
|
+
location @puma {
|
38
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
39
|
+
proxy_set_header Host $http_host;
|
40
|
+
proxy_set_header X-Real-IP $remote_addr;
|
41
|
+
proxy_set_header Client-IP $remote_addr;
|
42
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
43
|
+
proxy_redirect off;
|
44
|
+
proxy_pass http://<%= "app_#{application}" %>;
|
45
|
+
}
|
46
|
+
|
47
|
+
error_page 500 502 503 504 /500.html;
|
48
|
+
client_max_body_size 4G;
|
49
|
+
keepalive_timeout 10;
|
50
|
+
}
|
@@ -0,0 +1,173 @@
|
|
1
|
+
<% app_root = "/home/rails/apps/#{application}/current" %>
|
2
|
+
# The directory to operate out of.
|
3
|
+
#
|
4
|
+
# The default is the current directory.
|
5
|
+
#
|
6
|
+
directory '<%= app_root %>'
|
7
|
+
|
8
|
+
# Use an object or block as the rack application. This allows the
|
9
|
+
# config file to be the application itself.
|
10
|
+
#
|
11
|
+
# app do |env|
|
12
|
+
# puts env
|
13
|
+
#
|
14
|
+
# body = 'Hello, World!'
|
15
|
+
#
|
16
|
+
# [200, { 'Content-Type' => 'text/plain', 'Content-Length' => body.length.to_s }, [body]]
|
17
|
+
# end
|
18
|
+
|
19
|
+
# Load “path” as a rackup file.
|
20
|
+
#
|
21
|
+
# The default is “config.ru”.
|
22
|
+
#
|
23
|
+
# rackup '/u/apps/lolcat/config.ru'
|
24
|
+
|
25
|
+
# Set the environment in which the rack's app will run. The value must be a string.
|
26
|
+
#
|
27
|
+
# The default is “development”.
|
28
|
+
#
|
29
|
+
# environment 'production'
|
30
|
+
|
31
|
+
# Daemonize the server into the background. Highly suggest that
|
32
|
+
# this be combined with “pidfile” and “stdout_redirect”.
|
33
|
+
#
|
34
|
+
# The default is “false”.
|
35
|
+
#
|
36
|
+
daemonize
|
37
|
+
# daemonize false
|
38
|
+
|
39
|
+
# Store the pid of the server in the file at “path”.
|
40
|
+
#
|
41
|
+
pidfile "<%= app_root %>/tmp/pids/puma.pid"
|
42
|
+
|
43
|
+
# Use “path” as the file to store the server info state. This is
|
44
|
+
# used by “pumactl” to query and control the server.
|
45
|
+
#
|
46
|
+
# state_path '/u/apps/lolcat/tmp/pids/puma.state'
|
47
|
+
|
48
|
+
# Redirect STDOUT and STDERR to files specified. The 3rd parameter
|
49
|
+
# (“append”) specifies whether the output is appended, the default is
|
50
|
+
# “false”.
|
51
|
+
#
|
52
|
+
stdout_redirect "<%= app_root %>/log/puma_stdout.log", "<%= app_root %>/log/puma_stderr.log"
|
53
|
+
# stdout_redirect '/u/apps/lolcat/log/stdout', '/u/apps/lolcat/log/stderr'
|
54
|
+
# stdout_redirect '/u/apps/lolcat/log/stdout', '/u/apps/lolcat/log/stderr', true
|
55
|
+
|
56
|
+
# Disable request logging.
|
57
|
+
#
|
58
|
+
# The default is “false”.
|
59
|
+
#
|
60
|
+
# quiet
|
61
|
+
|
62
|
+
# Configure “min” to be the minimum number of threads to use to answer
|
63
|
+
# requests and “max” the maximum.
|
64
|
+
#
|
65
|
+
# The default is “0, 16”.
|
66
|
+
#
|
67
|
+
threads <%= puma_thread_min %>, <%= puma_thread_max %>
|
68
|
+
|
69
|
+
# Bind the server to “url”. “tcp://”, “unix://” and “ssl://” are the only
|
70
|
+
# accepted protocols.
|
71
|
+
#
|
72
|
+
# The default is “tcp://0.0.0.0:9292”.
|
73
|
+
#
|
74
|
+
<%=
|
75
|
+
case puma_bind_for
|
76
|
+
when :sock_file
|
77
|
+
%(bind "unix:///tmp/#{application}.sock")
|
78
|
+
when :tcp
|
79
|
+
if puma_bind_to.is_a? String
|
80
|
+
%(bind 'tcp://#{puma_bind_to}:#{puma_bind_port}')
|
81
|
+
elsif puma_bind_to.is_a? Hash
|
82
|
+
puma_bind_ip[current_server] ||= '0.0.0.0'
|
83
|
+
%(bind 'tcp://#{puma_bind_ip[current_server]}:#{puma_bind_port}')
|
84
|
+
end
|
85
|
+
end
|
86
|
+
%>
|
87
|
+
# bind 'tcp://0.0.0.0:9293'
|
88
|
+
# bind 'unix:///var/run/puma.sock?umask=0777'
|
89
|
+
# bind 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'
|
90
|
+
|
91
|
+
# Instead of “bind 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'” you
|
92
|
+
# can also use the “ssl_bind” option.
|
93
|
+
#
|
94
|
+
# ssl_bind '127.0.0.1', '9292', { key: path_to_key, cert: path_to_cert }
|
95
|
+
|
96
|
+
# Code to run before doing a restart. This code should
|
97
|
+
# close log files, database connections, etc.
|
98
|
+
#
|
99
|
+
# This can be called multiple times to add code each time.
|
100
|
+
#
|
101
|
+
# on_restart do
|
102
|
+
# puts 'On restart...'
|
103
|
+
# end
|
104
|
+
|
105
|
+
# Command to use to restart puma. This should be just how to
|
106
|
+
# load puma itself (ie. 'ruby -Ilib bin/puma'), not the arguments
|
107
|
+
# to puma, as those are the same as the original process.
|
108
|
+
#
|
109
|
+
# restart_command '/u/app/lolcat/bin/restart_puma'
|
110
|
+
|
111
|
+
# === Cluster mode ===
|
112
|
+
|
113
|
+
# How many worker processes to run.
|
114
|
+
#
|
115
|
+
# The default is “0”.
|
116
|
+
#
|
117
|
+
workers <%= puma_workers %>
|
118
|
+
|
119
|
+
# Code to run when a worker boots to setup the process before booting
|
120
|
+
# the app.
|
121
|
+
#
|
122
|
+
# This can be called multiple times to add hooks.
|
123
|
+
#
|
124
|
+
|
125
|
+
on_worker_boot do
|
126
|
+
ActiveSupport.on_load(:active_record) do
|
127
|
+
ActiveRecord::Base.establish_connection
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
# Code to run when a worker boots to setup the process after booting
|
132
|
+
# the app.
|
133
|
+
#
|
134
|
+
# This can be called multiple times to add hooks.
|
135
|
+
#
|
136
|
+
# after_worker_boot do
|
137
|
+
# puts 'On worker boot...'
|
138
|
+
# end
|
139
|
+
|
140
|
+
# Allow workers to reload bundler context when master process is issued
|
141
|
+
# a USR1 signal. This allows proper reloading of gems while the master
|
142
|
+
# is preserved across a phased-restart. (incompatible with preload_app)
|
143
|
+
# (off by default)
|
144
|
+
|
145
|
+
# prune_bundler
|
146
|
+
|
147
|
+
# Preload the application before starting the workers; this conflicts with
|
148
|
+
# phased restart feature. (off by default)
|
149
|
+
|
150
|
+
preload_app!
|
151
|
+
|
152
|
+
# Additional text to display in process listing
|
153
|
+
#
|
154
|
+
# tag 'gambling'
|
155
|
+
|
156
|
+
# Change the default timeout of workers
|
157
|
+
#
|
158
|
+
# worker_timeout 60
|
159
|
+
|
160
|
+
# === Puma control rack application ===
|
161
|
+
|
162
|
+
# Start the puma control rack application on “url”. This application can
|
163
|
+
# be communicated with to control the main server. Additionally, you can
|
164
|
+
# provide an authentication token, so all requests to the control server
|
165
|
+
# will need to include that token as a query parameter. This allows for
|
166
|
+
# simple authentication.
|
167
|
+
#
|
168
|
+
# Check out https://github.com/puma/puma/blob/master/lib/puma/app/status.rb
|
169
|
+
# to see what the app has available.
|
170
|
+
#
|
171
|
+
# activate_control_app 'unix:///var/run/pumactl.sock'
|
172
|
+
# activate_control_app 'unix:///var/run/pumactl.sock', { auth_token: '12345' }
|
173
|
+
# activate_control_app 'unix:///var/run/pumactl.sock', { no_token: true }
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "visionbundles/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "visionbundles"
|
7
|
+
s.version = Visionbundles::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.summary = %q{common deploy flow tasks for capistrano 2.x.x}
|
10
|
+
s.description = %q{nginx, puma, sidekiq, deploy flow}
|
11
|
+
|
12
|
+
s.required_ruby_version = ">= 1.8.7"
|
13
|
+
s.required_rubygems_version = ">= 1.3.6"
|
14
|
+
|
15
|
+
s.authors = ["Eddie Li"]
|
16
|
+
s.email = ["eddie@visionbundles.com"]
|
17
|
+
s.homepage = "https://github.com/afunction/visionbundles"
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
|
23
|
+
s.license = 'MIT'
|
24
|
+
|
25
|
+
s.add_dependency 'colorize', '~> 0'
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: visionbundles
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eddie Li
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-06-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colorize
|
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: nginx, puma, sidekiq, deploy flow
|
28
|
+
email:
|
29
|
+
- eddie@visionbundles.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".gitignore"
|
35
|
+
- Gemfile
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- lib/visionbundles.rb
|
39
|
+
- lib/visionbundles/base.rb
|
40
|
+
- lib/visionbundles/recipes/db.rb
|
41
|
+
- lib/visionbundles/recipes/dev.rb
|
42
|
+
- lib/visionbundles/recipes/nginx.rb
|
43
|
+
- lib/visionbundles/recipes/puma.rb
|
44
|
+
- lib/visionbundles/recipes/sidekiq.rb
|
45
|
+
- lib/visionbundles/templates/nginx/nginx.conf.erb
|
46
|
+
- lib/visionbundles/templates/puma/config.erb
|
47
|
+
- lib/visionbundles/version.rb
|
48
|
+
- visionbundles.gemspec
|
49
|
+
homepage: https://github.com/afunction/visionbundles
|
50
|
+
licenses:
|
51
|
+
- MIT
|
52
|
+
metadata: {}
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.8.7
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 1.3.6
|
67
|
+
requirements: []
|
68
|
+
rubyforge_project:
|
69
|
+
rubygems_version: 2.3.0
|
70
|
+
signing_key:
|
71
|
+
specification_version: 4
|
72
|
+
summary: common deploy flow tasks for capistrano 2.x.x
|
73
|
+
test_files: []
|