capistrano_misc_recipes 0.0.2 → 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.
- data/README.md +74 -3
- data/lib/capistrano_misc_recipes/.passenger.rb.swo +0 -0
- data/lib/capistrano_misc_recipes/bundler.rb +7 -0
- data/lib/capistrano_misc_recipes/console.rb +6 -2
- data/lib/capistrano_misc_recipes/db_dump.rb +1 -0
- data/lib/capistrano_misc_recipes/dbfetch.rb +1 -1
- data/lib/capistrano_misc_recipes/passenger.rb +126 -0
- data/lib/capistrano_misc_recipes/version.rb +1 -1
- metadata +7 -4
data/README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# Capistrano Misc Recipes
|
2
2
|
|
3
|
-
This gem provides several capistrano tasks to help to access rails application environment and log files.
|
3
|
+
This gem provides several capistrano tasks to help to access rails application environment and log files, fetch db dump from server and manage passenger process.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
gem 'capistrano_misc_recipies'
|
9
|
+
gem 'capistrano_misc_recipies', group: :development
|
10
10
|
|
11
11
|
And then execute:
|
12
12
|
|
@@ -18,9 +18,13 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
+
### Console commands
|
22
|
+
|
21
23
|
Add to your Capfile:
|
22
24
|
|
23
|
-
|
25
|
+
```ruby
|
26
|
+
require 'capistrano_misc_recipies/console'
|
27
|
+
```
|
24
28
|
|
25
29
|
To open rails db console on first application server:
|
26
30
|
|
@@ -42,6 +46,73 @@ To get 1000 string from application log file from server:
|
|
42
46
|
|
43
47
|
$ cap console:tail_log1000
|
44
48
|
|
49
|
+
### Fetch database dump from server
|
50
|
+
|
51
|
+
Add to your Capfile:
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
require 'capistrano_misc_recipies/dbfetch'
|
55
|
+
```
|
56
|
+
|
57
|
+
To fetch db dump from server run:
|
58
|
+
|
59
|
+
$ cap dbfetch
|
60
|
+
|
61
|
+
Gem also includes rake task to make dump of local database:
|
62
|
+
|
63
|
+
$ rake db:sqldump
|
64
|
+
|
65
|
+
### Passenger standalone manage tasks
|
66
|
+
|
67
|
+
Add to your Capfile:
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
require 'capistrano_misc_recipies/passenger'
|
71
|
+
```
|
72
|
+
|
73
|
+
Now you have `deploy:start`, `deploy:stop` and `deploy:restart` tasks which manage passenger process.
|
74
|
+
Passenger starts on _127.0.0.1:3000_ by default. Add next directives to your config/deploy.rb file to
|
75
|
+
override default:
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
set :passenger_address, '127.0.0.1'
|
79
|
+
set :passenger_port, 3000
|
80
|
+
```
|
81
|
+
|
82
|
+
Also you may bind passenger to Unix domain socket instead of TCP socket:
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
set :passenger_use_socket, true
|
86
|
+
```
|
87
|
+
|
88
|
+
Socket file default location (`#{Rails.root}/tmp/pids/#{Rails.env}.sock` by default) can be changed:
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
set :passenger_socket_file, '/path/to/file.sock'
|
92
|
+
```
|
93
|
+
|
94
|
+
To customise deploy task override it in `config/deploy.rb` file:
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
namespace :deploy do
|
98
|
+
task :start do
|
99
|
+
|
100
|
+
# some logic...
|
101
|
+
|
102
|
+
passenger.start
|
103
|
+
|
104
|
+
# some other logic...
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
```
|
109
|
+
|
110
|
+
`passenger.start`, `passenger.stop` and `passenger.restart` tasks can be used.
|
111
|
+
|
112
|
+
### Generate sample nginx config for application
|
113
|
+
|
114
|
+
Task `cap passenger:nginx_config` prints sample nginx config and saves it in file application tmp dir
|
115
|
+
|
45
116
|
## Contributing
|
46
117
|
|
47
118
|
1. Fork it
|
Binary file
|
@@ -1,8 +1,12 @@
|
|
1
1
|
# Recipes for run somoe useful console commands on server
|
2
2
|
|
3
|
+
require 'capistrano_misc_recipes/bundler'
|
4
|
+
|
3
5
|
module Capistrano
|
4
6
|
module Console
|
7
|
+
|
5
8
|
Configuration.instance(true).load do
|
9
|
+
extend ::CapistranoMiscRecipes::Bundler
|
6
10
|
|
7
11
|
def execute_ssh_locally cmd=''
|
8
12
|
hostname = find_servers_for_task(current_task).first
|
@@ -32,7 +36,7 @@ module Capistrano
|
|
32
36
|
task :rails, roles: :app do
|
33
37
|
|
34
38
|
console_command = "rails console %s" % rails_env
|
35
|
-
console_command =
|
39
|
+
console_command = bundlify console_command
|
36
40
|
|
37
41
|
execute_ssh_locally console_command
|
38
42
|
end
|
@@ -40,7 +44,7 @@ module Capistrano
|
|
40
44
|
desc "Open a rails db console the first app server"
|
41
45
|
task :db, roles: :app do
|
42
46
|
console_command = "rails dbconsole %s" % rails_env
|
43
|
-
console_command =
|
47
|
+
console_command = bundlify console_command
|
44
48
|
|
45
49
|
execute_ssh_locally console_command
|
46
50
|
end
|
@@ -17,7 +17,7 @@ module Capistrano
|
|
17
17
|
config = begin
|
18
18
|
YAML.load(ERB.new(database_yml).result)[rails_env]
|
19
19
|
rescue
|
20
|
-
# TODO error report if database.yml not
|
20
|
+
# TODO error report if database.yml not reachable!
|
21
21
|
end
|
22
22
|
|
23
23
|
dump_file = "/tmp/#{ capture("hostname").chomp }-#{ config['database'] }-#{ Time.now.strftime('%Y-%m-%d-%H-%M-%S') }.sql.bz2"
|
@@ -0,0 +1,126 @@
|
|
1
|
+
# Recipe for manage passenger
|
2
|
+
|
3
|
+
require 'capistrano_misc_recipes/bundler'
|
4
|
+
|
5
|
+
module Capistrano
|
6
|
+
module Passenger
|
7
|
+
Configuration.instance(true).load do
|
8
|
+
namespace :passenger do
|
9
|
+
extend ::CapistranoMiscRecipes::Bundler
|
10
|
+
|
11
|
+
_cset :passenger_pids_dir, Pathname.new(current_path).join('tmp', 'pids')
|
12
|
+
_cset :passenger_pid_file, passenger_pids_dir.join("#{rails_env}.pid")
|
13
|
+
_cset :passenger_socket_file, passenger_pids_dir.join("#{rails_env}.sock")
|
14
|
+
_cset :passenger_address, '127.0.0.1'
|
15
|
+
_cset :passenger_port, 3000
|
16
|
+
_cset :passenger_use_socket, false
|
17
|
+
|
18
|
+
|
19
|
+
desc '[internal] Start passenger'
|
20
|
+
task :start, roles: :app do
|
21
|
+
|
22
|
+
command = []
|
23
|
+
command << "cd #{current_path}"
|
24
|
+
command << "&&"
|
25
|
+
command << "rm -f #{passenger_socket_file}" # if passenger was finished ubnormally
|
26
|
+
command << "&&"
|
27
|
+
command << "#{bundlify 'passenger'} start"
|
28
|
+
command << current_path
|
29
|
+
|
30
|
+
if fetch :passenger_use_socket
|
31
|
+
command << "--socket #{passenger_socket_file}"
|
32
|
+
else
|
33
|
+
command << "--address #{passenger_address}"
|
34
|
+
command << "--port #{passenger_port}"
|
35
|
+
end
|
36
|
+
|
37
|
+
command << "--pid-file #{passenger_pid_file}"
|
38
|
+
command << "--environment #{rails_env}"
|
39
|
+
command << "--daemonize"
|
40
|
+
run command.join ' '
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
desc '[internal] Stop passenger'
|
45
|
+
task :stop, roles: :app do
|
46
|
+
run "cd #{current_path} && #{bundlify 'passenger'} stop --pid-file #{passenger_pid_file} ; true"
|
47
|
+
end
|
48
|
+
|
49
|
+
desc '[internal] Restart passenger'
|
50
|
+
task :restart, roles: :app, except: { no_release: true } do
|
51
|
+
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
|
52
|
+
end
|
53
|
+
|
54
|
+
desc 'generates nginx virtual host template file'
|
55
|
+
task :nginx_config do
|
56
|
+
|
57
|
+
proxy_pass = if passenger_use_socket
|
58
|
+
"http://unix:#{passenger_socket_file}"
|
59
|
+
else
|
60
|
+
"http://#{passenger_address}:#{passenger_port}"
|
61
|
+
end
|
62
|
+
|
63
|
+
conf_file = <<CONF
|
64
|
+
|
65
|
+
# nginx virtual host file for
|
66
|
+
# application: #{application}
|
67
|
+
#{exists?(:stages) ? "# stage: #{stage}\n" : nil}
|
68
|
+
server {
|
69
|
+
listen 80;
|
70
|
+
server_name #{application}
|
71
|
+
root #{File.join current_path, 'public'};
|
72
|
+
client_max_body_size 15M;
|
73
|
+
|
74
|
+
location / {
|
75
|
+
try_files /system/maintence.html
|
76
|
+
$uri $uri/index.html $uri.html
|
77
|
+
@passenger;
|
78
|
+
}
|
79
|
+
|
80
|
+
location @passenger {
|
81
|
+
proxy_set_header Host $host;
|
82
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
83
|
+
|
84
|
+
proxy_pass #{proxy_pass};
|
85
|
+
}
|
86
|
+
|
87
|
+
error_page 500 502 503 504 /500.html;
|
88
|
+
error_page 404 403 /404.html;
|
89
|
+
}
|
90
|
+
|
91
|
+
CONF
|
92
|
+
|
93
|
+
puts conf_file
|
94
|
+
# save file in application tmp dir
|
95
|
+
put conf_file, Pathname.new(current_path).join('tmp', [application, exists?(:stages) ? stage : nil].compact.join(?_)).to_s
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
namespace :deploy do
|
101
|
+
desc 'Starts application server'
|
102
|
+
task :start do
|
103
|
+
passenger.start
|
104
|
+
end
|
105
|
+
|
106
|
+
desc 'Stops application server'
|
107
|
+
task :stop do
|
108
|
+
passenger.stop
|
109
|
+
end
|
110
|
+
|
111
|
+
desc 'Restarts application server'
|
112
|
+
task :restart do
|
113
|
+
passenger.restart
|
114
|
+
end
|
115
|
+
|
116
|
+
desc 'Deploys your project and runs the migrate rake task'
|
117
|
+
task :full do
|
118
|
+
stop
|
119
|
+
update
|
120
|
+
migrate
|
121
|
+
restart
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano_misc_recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
@@ -75,9 +75,12 @@ files:
|
|
75
75
|
- Rakefile
|
76
76
|
- capistrano_misc_recipes.gemspec
|
77
77
|
- lib/capistrano_misc_recipes.rb
|
78
|
+
- lib/capistrano_misc_recipes/.passenger.rb.swo
|
79
|
+
- lib/capistrano_misc_recipes/bundler.rb
|
78
80
|
- lib/capistrano_misc_recipes/console.rb
|
79
81
|
- lib/capistrano_misc_recipes/db_dump.rb
|
80
82
|
- lib/capistrano_misc_recipes/dbfetch.rb
|
83
|
+
- lib/capistrano_misc_recipes/passenger.rb
|
81
84
|
- lib/capistrano_misc_recipes/tasks.rb
|
82
85
|
- lib/capistrano_misc_recipes/version.rb
|
83
86
|
homepage: http://github.com/corlinus/capistrano_misc_recipes
|
@@ -95,7 +98,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
95
98
|
version: '0'
|
96
99
|
segments:
|
97
100
|
- 0
|
98
|
-
hash:
|
101
|
+
hash: -4105244698074156849
|
99
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
103
|
none: false
|
101
104
|
requirements:
|
@@ -104,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
107
|
version: '0'
|
105
108
|
segments:
|
106
109
|
- 0
|
107
|
-
hash:
|
110
|
+
hash: -4105244698074156849
|
108
111
|
requirements: []
|
109
112
|
rubyforge_project:
|
110
113
|
rubygems_version: 1.8.25
|