deployer 0.1.3 → 0.1.4
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 +6 -2
- data/bin/enhancify +13 -2
- data/lib/deployer.rb +4 -33
- data/lib/deployer/deploy.rb +35 -0
- data/lib/deployer/helpers.rb +2 -2
- data/lib/deployer/initializer.rb +2 -4
- data/lib/{tasks → deployer/tasks}/commands.rb +0 -0
- data/lib/{tasks → deployer/tasks}/db.rb +0 -10
- data/lib/{tasks → deployer/tasks}/environment.rb +0 -0
- data/lib/{tasks → deployer/tasks}/gems.rb +0 -0
- data/lib/{tasks → deployer/tasks}/global.rb +9 -4
- data/lib/{tasks → deployer/tasks}/passenger.rb +0 -0
- data/lib/{tasks → deployer/tasks}/plugin.rb +0 -0
- data/lib/{tasks → deployer/tasks}/repository.rb +0 -0
- data/lib/deployer/tasks/sync.rb +31 -0
- data/setup/deploy.rb +38 -5
- metadata +14 -12
data/README.md
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Deployer is gem that enhances Capistrano to simplify the deployment of Ruby on Rails applications.
|
|
4
4
|
|
|
5
|
-
It assumes you are using Passenger to serve your Ruby on Rails applications.
|
|
5
|
+
It assumes you are using Passenger to serve your Ruby on Rails applications, and Bundler to manage gem dependencies.
|
|
6
|
+
|
|
7
|
+
It works with **Ruby on Rails 3** and **Ruby on Rails 2** applications as long as you are using **Bundler**.
|
|
8
|
+
|
|
9
|
+
*If you are currently using the old config.gem method in a Ruby on Rails 2 application, you can easily change this to make it use Bundler instead. [Check out my gist on how to achieve Rails 2 Bundler compatibility.](http://gist.github.com/400609)*
|
|
6
10
|
|
|
7
11
|
|
|
8
12
|
## Getting Started
|
|
@@ -146,7 +150,7 @@ Here you can specify that you want to pull/push from/to a git repository that's
|
|
|
146
150
|
|
|
147
151
|
And then here is the last bit of server configuration you can specify.
|
|
148
152
|
|
|
149
|
-
###
|
|
153
|
+
### Adding Application Specific Deployment Tasks
|
|
150
154
|
|
|
151
155
|
Inside the *namespace :deploy do* block you can define your own deployment tasks that are specific to your application.
|
|
152
156
|
|
data/bin/enhancify
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
|
|
5
|
+
begin
|
|
6
|
+
require 'optparse'
|
|
7
|
+
rescue LoadError
|
|
8
|
+
puts '[Deployer] => Tried load load OptionParser but could not find it.'
|
|
9
|
+
puts '[Deployer] => Install Option Parser ( gem install OptionParser ) and try again.'
|
|
10
|
+
exit
|
|
11
|
+
end
|
|
12
|
+
|
|
3
13
|
options = {}
|
|
4
14
|
|
|
5
15
|
optparse = OptionParser.new do |opts|
|
|
@@ -59,12 +69,13 @@ File.open(File.join(File.dirname(__FILE__), '..', 'setup', 'deploy.rb'), "r") do
|
|
|
59
69
|
end
|
|
60
70
|
end
|
|
61
71
|
|
|
62
|
-
|
|
72
|
+
# checks for both require "deployer" and require "deployer/initializer"
|
|
73
|
+
unless File.open(File.join('Capfile'), 'r').read.include?('require "deployer"')
|
|
63
74
|
puts "[Deployer] => Adding Deployer Loader inside #{PATH}/Capfile."
|
|
64
75
|
File.open(File.join(PATH, 'Capfile'), "a") do |capfile|
|
|
65
76
|
capfile << <<-CAPFILE
|
|
66
77
|
\n
|
|
67
|
-
require "deployer
|
|
78
|
+
require "deployer"
|
|
68
79
|
load deployer
|
|
69
80
|
CAPFILE
|
|
70
81
|
end
|
data/lib/deployer.rb
CHANGED
|
@@ -1,34 +1,5 @@
|
|
|
1
1
|
##
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# This Configuration Is *Conventional*
|
|
7
|
-
set :application, ip
|
|
8
|
-
set :deploy_to, "/var/apps/#{appname}" unless respond_to?(:deploy_to)
|
|
9
|
-
set :repository_path, "/var/git/#{appname}.git" unless respond_to?(:repository_path)
|
|
10
|
-
set :repository, "#{user}@#{application}:#{repository_path}"
|
|
11
|
-
set :repository, repository_url if respond_to?(:repository_url)
|
|
12
|
-
|
|
13
|
-
set :scm, 'git'
|
|
14
|
-
set :use_sudo, false
|
|
15
|
-
role :web, application
|
|
16
|
-
role :app, application
|
|
17
|
-
role :db, application
|
|
18
|
-
default_run_options[:pty] = true
|
|
19
|
-
|
|
20
|
-
##
|
|
21
|
-
# Default Configuration
|
|
22
|
-
set :remote, 'origin' unless respond_to?(:remote)
|
|
23
|
-
set :branch, 'master' unless respond_to?(:branch)
|
|
24
|
-
|
|
25
|
-
##
|
|
26
|
-
# Load Deployment Tasks
|
|
27
|
-
load_tasks('global')
|
|
28
|
-
load_tasks('passenger')
|
|
29
|
-
load_tasks('plugin')
|
|
30
|
-
load_tasks('db')
|
|
31
|
-
load_tasks('gems')
|
|
32
|
-
load_tasks('repository')
|
|
33
|
-
load_tasks('environment')
|
|
34
|
-
load_tasks('commands')
|
|
2
|
+
# Returns a path that can be loaded by the "load" method inside the Capfile
|
|
3
|
+
def deployer
|
|
4
|
+
File.join(File.dirname(__FILE__), 'deployer', 'deploy.rb')
|
|
5
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
##
|
|
2
|
+
# Load Deployer Helpers
|
|
3
|
+
require File.join(File.dirname(__FILE__), 'helpers')
|
|
4
|
+
|
|
5
|
+
##
|
|
6
|
+
# This Configuration Is *Conventional*
|
|
7
|
+
set :application, ip
|
|
8
|
+
set :deploy_to, respond_to?(:deploy_path) ? deploy_path : "/var/apps/#{appname}"
|
|
9
|
+
set :repository_path, "/var/git/#{appname}.git" unless respond_to?(:repository_path)
|
|
10
|
+
set :repository, "#{user}@#{application}:#{repository_path}"
|
|
11
|
+
set :repository, repository_url if respond_to?(:repository_url)
|
|
12
|
+
|
|
13
|
+
set :scm, 'git'
|
|
14
|
+
set :use_sudo, false
|
|
15
|
+
role :web, application
|
|
16
|
+
role :app, application
|
|
17
|
+
role :db, application
|
|
18
|
+
default_run_options[:pty] = true
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# Default Configuration
|
|
22
|
+
set :remote, 'origin' unless respond_to?(:remote)
|
|
23
|
+
set :branch, 'master' unless respond_to?(:branch)
|
|
24
|
+
|
|
25
|
+
##
|
|
26
|
+
# Load Deployment Tasks
|
|
27
|
+
load_tasks('global')
|
|
28
|
+
load_tasks('sync')
|
|
29
|
+
load_tasks('passenger')
|
|
30
|
+
load_tasks('plugin')
|
|
31
|
+
load_tasks('db')
|
|
32
|
+
load_tasks('gems')
|
|
33
|
+
load_tasks('repository')
|
|
34
|
+
load_tasks('environment')
|
|
35
|
+
load_tasks('commands')
|
data/lib/deployer/helpers.rb
CHANGED
|
@@ -7,7 +7,7 @@ end
|
|
|
7
7
|
##
|
|
8
8
|
# Helper Method that assists in loading in tasks from the tasks folder
|
|
9
9
|
def load_tasks(tasks)
|
|
10
|
-
load File.join(File.dirname(__FILE__), '
|
|
10
|
+
load File.join(File.dirname(__FILE__), 'tasks', "#{tasks}.rb")
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
##
|
|
@@ -37,7 +37,7 @@ end
|
|
|
37
37
|
def bundle_path
|
|
38
38
|
return @bundle_path if @bundle_path
|
|
39
39
|
Net::SSH.start(ip, user) do |ssh|
|
|
40
|
-
@bundle_path = ssh.exec!("which bundle")
|
|
40
|
+
@bundle_path = ssh.exec!("which bundle") || "bundle"
|
|
41
41
|
end
|
|
42
42
|
@bundle_path
|
|
43
43
|
end
|
data/lib/deployer/initializer.rb
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
##
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
File.join(File.dirname(__FILE__), '..', 'deployer.rb')
|
|
5
|
-
end
|
|
2
|
+
# For backwards compatibility from previous deployer versions
|
|
3
|
+
require File.join(File.dirname(__FILE__), '..', 'deployer')
|
|
File without changes
|
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
namespace :deploy do
|
|
2
2
|
namespace :db do
|
|
3
|
-
|
|
4
|
-
desc "Syncs the database.yml file from the local machine to the remote machine"
|
|
5
|
-
task :sync_yaml do
|
|
6
|
-
log "Syncing local database.yml (config/database.yml) to the shared folder (#{appname}/shared/config/database.yml)"
|
|
7
|
-
unless File.exist?("config/database.yml")
|
|
8
|
-
puts "There is no config/database.yml.\n "
|
|
9
|
-
exit
|
|
10
|
-
end
|
|
11
|
-
system "rsync -vr --exclude='.DS_Store' config/database.yml #{user}@#{application}:#{shared_path}/config/"
|
|
12
|
-
end
|
|
13
3
|
|
|
14
4
|
desc "Create the database"
|
|
15
5
|
task :create do
|
|
File without changes
|
|
File without changes
|
|
@@ -5,8 +5,10 @@ namespace :deploy do
|
|
|
5
5
|
system "cap deploy:setup_shared_path"
|
|
6
6
|
system "cap deploy:setup_symlinks"
|
|
7
7
|
system "cap deploy:gems:install"
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
unless respond_to?(:skip_database) and skip_database
|
|
9
|
+
system "cap deploy:db:create"
|
|
10
|
+
system "cap deploy:db:migrate"
|
|
11
|
+
end
|
|
10
12
|
after_deploy if respond_to?(:after_deploy)
|
|
11
13
|
system "cap deploy:passenger:restart"
|
|
12
14
|
end
|
|
@@ -15,7 +17,7 @@ namespace :deploy do
|
|
|
15
17
|
task :initial do
|
|
16
18
|
system "cap deploy:setup"
|
|
17
19
|
system "cap deploy:setup_shared_path"
|
|
18
|
-
system "cap deploy:
|
|
20
|
+
system "cap deploy:sync:files"
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
desc "Sets up the shared path"
|
|
@@ -31,7 +33,10 @@ namespace :deploy do
|
|
|
31
33
|
desc "Creates symbolic links from the application to the shared folders"
|
|
32
34
|
task :setup_symlinks do
|
|
33
35
|
log "Creating symbolic links from the application to the shared folders"
|
|
34
|
-
shared_symlinks = %w(
|
|
36
|
+
shared_symlinks = %w()
|
|
37
|
+
unless respond_to?(:skip_database) and skip_database
|
|
38
|
+
shared_symlinks << "config/database.yml"
|
|
39
|
+
end
|
|
35
40
|
shared_symlinks += additional_shared_symlinks if respond_to?(:additional_shared_symlinks)
|
|
36
41
|
shared_symlinks.each do |symlink|
|
|
37
42
|
run "ln -nfs #{File.join(shared_path, symlink)} #{File.join(current_path, symlink)}"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
namespace :deploy do
|
|
2
|
+
namespace :sync do
|
|
3
|
+
desc "Syncs the configured files from the local machine to the remote machine"
|
|
4
|
+
task :files do
|
|
5
|
+
files = []
|
|
6
|
+
|
|
7
|
+
unless respond_to?(:skip_database) and skip_database
|
|
8
|
+
files << "config/database.yml"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
if respond_to?(:sync_files)
|
|
12
|
+
files += sync_files
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
files.each do |file|
|
|
16
|
+
if File.exist?(file)
|
|
17
|
+
path_parts = file.split('/')
|
|
18
|
+
file = path_parts.pop
|
|
19
|
+
if path_parts.empty?
|
|
20
|
+
path = ''
|
|
21
|
+
else
|
|
22
|
+
path = path_parts.join('/') + '/'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
log "Syncing local file \"#{path + file}\" to the shared folder (#{appname}/shared/#{path + file})"
|
|
26
|
+
system "rsync -vr --exclude='.DS_Store' #{path + file} #{user}@#{application}:#{shared_path}/#{path}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/setup/deploy.rb
CHANGED
|
@@ -36,29 +36,62 @@ set :remote, "origin" # the remote that should be deployed
|
|
|
36
36
|
set :branch, "production" # the branch that should be deployed
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
##
|
|
40
|
+
# Optional
|
|
41
|
+
# Specify custom deployment path
|
|
42
|
+
|
|
43
|
+
# set :deploy_path, "/var/apps/#{appname}"
|
|
44
|
+
|
|
45
|
+
|
|
39
46
|
##
|
|
40
47
|
# Optional
|
|
41
48
|
# If you want to use a repository from a different location (github.com, trunksapp.com, etc)
|
|
42
49
|
# Then you can specify the URL here. When using this, the "cap deploy:repository" tasks won't work.
|
|
50
|
+
|
|
43
51
|
# set :repository_url, "deployer@example.com:/path/to/repository.git"
|
|
44
52
|
|
|
45
53
|
|
|
46
54
|
##
|
|
47
|
-
#
|
|
48
|
-
|
|
49
|
-
|
|
55
|
+
# Optional
|
|
56
|
+
# Use this to define a list of files you want to upload for the deploy:initial task
|
|
57
|
+
|
|
58
|
+
# set :sync_files,
|
|
59
|
+
# %w(config/mongoid.yml)
|
|
50
60
|
|
|
51
61
|
|
|
52
62
|
##
|
|
63
|
+
# Optional
|
|
64
|
+
# Use this to skip database deployment tasks (db:create, db:migrate)
|
|
65
|
+
# Useful when, for example, not using ActiveRecord, but MongoDB with Mongoid instead
|
|
66
|
+
|
|
67
|
+
# set :skip_database, true
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
##
|
|
71
|
+
# Optional
|
|
72
|
+
# Set up additional shared folders. The example below will create:
|
|
73
|
+
# SHARED_PATH/public/system
|
|
74
|
+
# SHARED_PATH/public/assets
|
|
75
|
+
# SHARED_PATH/db
|
|
76
|
+
|
|
77
|
+
# set :additional_shared_folders,
|
|
78
|
+
# %w(public/system public/assets db)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
##
|
|
82
|
+
# Optional
|
|
53
83
|
# Set up additional shared symlinks
|
|
54
84
|
# These are mirrored to the Rails Applications' structure
|
|
55
85
|
# public/system = RAILS_ROOT/public/system => SHARED_PATH/public/system
|
|
86
|
+
# public/assets = RAILS_ROOT/public/assets => SHARED_PATH/public/assets
|
|
56
87
|
# db/production.sqlite3 = RAILS_ROOT/db/production.sqlite3 => SHARED_PATH/db/production.sqlite3
|
|
57
|
-
|
|
58
|
-
|
|
88
|
+
|
|
89
|
+
# set :additional_shared_symlinks,
|
|
90
|
+
# %w(public/system public/assets db/production.sqlite3)
|
|
59
91
|
|
|
60
92
|
|
|
61
93
|
##
|
|
94
|
+
# Optional
|
|
62
95
|
# Additional Application Specific Tasks and Callbacks
|
|
63
96
|
# In here you can specify which Application Specific tasks you would like to run right before
|
|
64
97
|
# Passenger restarts the application. You invoke the by simply calling "run_custom_task"
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: deployer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 19
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 1
|
|
9
|
-
-
|
|
10
|
-
version: 0.1.
|
|
9
|
+
- 4
|
|
10
|
+
version: 0.1.4
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Michael van Rooijen
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2010-
|
|
18
|
+
date: 2010-07-12 00:00:00 +02:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -60,17 +60,19 @@ extra_rdoc_files: []
|
|
|
60
60
|
|
|
61
61
|
files:
|
|
62
62
|
- bin/enhancify
|
|
63
|
+
- lib/deployer/deploy.rb
|
|
63
64
|
- lib/deployer/helpers.rb
|
|
64
65
|
- lib/deployer/initializer.rb
|
|
66
|
+
- lib/deployer/tasks/commands.rb
|
|
67
|
+
- lib/deployer/tasks/db.rb
|
|
68
|
+
- lib/deployer/tasks/environment.rb
|
|
69
|
+
- lib/deployer/tasks/gems.rb
|
|
70
|
+
- lib/deployer/tasks/global.rb
|
|
71
|
+
- lib/deployer/tasks/passenger.rb
|
|
72
|
+
- lib/deployer/tasks/plugin.rb
|
|
73
|
+
- lib/deployer/tasks/repository.rb
|
|
74
|
+
- lib/deployer/tasks/sync.rb
|
|
65
75
|
- lib/deployer.rb
|
|
66
|
-
- lib/tasks/commands.rb
|
|
67
|
-
- lib/tasks/db.rb
|
|
68
|
-
- lib/tasks/environment.rb
|
|
69
|
-
- lib/tasks/gems.rb
|
|
70
|
-
- lib/tasks/global.rb
|
|
71
|
-
- lib/tasks/passenger.rb
|
|
72
|
-
- lib/tasks/plugin.rb
|
|
73
|
-
- lib/tasks/repository.rb
|
|
74
76
|
- setup/deploy.rb
|
|
75
77
|
- README.md
|
|
76
78
|
- LICENSE
|