capistrano-windows-server 0.6.1 → 0.7.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 +12 -1
- data/VERSION +1 -1
- data/capistrano-windows-server.gemspec +10 -11
- data/lib/capistrano/ext/windows_server.rb +226 -214
- data/lib/capistrano/ext/windows_server/target_system_check.rb +21 -0
- metadata +55 -65
data/README.md
CHANGED
@@ -211,6 +211,17 @@ The following tasks were removed:
|
|
211
211
|
* `cap deploy:symlink`
|
212
212
|
|
213
213
|
|
214
|
+
Deploying to both Windows and Linux servers
|
215
|
+
-------------------------------------------
|
216
|
+
|
217
|
+
If you use capistrano/ext/multistage, you can specify that some stages are not Windows servers.
|
218
|
+
|
219
|
+
In your stage configuration file (eg: config/deploy/linux_target.rb) call the method
|
220
|
+
|
221
|
+
not_windows!
|
222
|
+
|
223
|
+
This will prevent capistrano from loading capistrano-windows-server when deploying to that stage.
|
224
|
+
|
214
225
|
Contributing to capistrano-windows-server
|
215
226
|
-----------------------------------------
|
216
227
|
|
@@ -227,4 +238,4 @@ We would love if you contribute back changes that you make to make it work for y
|
|
227
238
|
Copyright
|
228
239
|
---------
|
229
240
|
|
230
|
-
Copyright (c) 2011 SciMed Solutions, Inc. See LICENSE.txt for further details.
|
241
|
+
Copyright (c) 2011-2012 SciMed Solutions, Inc. See LICENSE.txt for further details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
@@ -4,16 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = "capistrano-windows-server"
|
8
|
+
s.version = "0.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Edward Anderson"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
|
15
|
-
See the github page for instruction on how to set up Windows to get it ready for a deploy.}
|
16
|
-
s.email = %q{edward.anderson@scimedsolutions.com}
|
12
|
+
s.date = "2012-11-09"
|
13
|
+
s.description = "This gem modifies capistrano recipes to allow deploys to windows machines.\nSeveral nuances such as the lack of symlinks make the deploy a little different, but it's better than doing it by hand.\nSee the github page for instruction on how to set up Windows to get it ready for a deploy."
|
14
|
+
s.email = "edward.anderson@scimedsolutions.com"
|
17
15
|
s.extra_rdoc_files = [
|
18
16
|
"LICENSE.txt",
|
19
17
|
"README.md"
|
@@ -28,13 +26,14 @@ See the github page for instruction on how to set up Windows to get it ready for
|
|
28
26
|
"VERSION",
|
29
27
|
"capistrano-windows-server.gemspec",
|
30
28
|
"lib/capistrano-windows-server.rb",
|
31
|
-
"lib/capistrano/ext/windows_server.rb"
|
29
|
+
"lib/capistrano/ext/windows_server.rb",
|
30
|
+
"lib/capistrano/ext/windows_server/target_system_check.rb"
|
32
31
|
]
|
33
|
-
s.homepage =
|
32
|
+
s.homepage = "http://github.com/nilbus/capistrano-windows-server"
|
34
33
|
s.licenses = ["MIT"]
|
35
34
|
s.require_paths = ["lib"]
|
36
|
-
s.rubygems_version =
|
37
|
-
s.summary =
|
35
|
+
s.rubygems_version = "1.8.24"
|
36
|
+
s.summary = "Deploy Ruby on Rails applications with Capistrano to Windows servers"
|
38
37
|
|
39
38
|
if s.respond_to? :specification_version then
|
40
39
|
s.specification_version = 3
|
@@ -1,270 +1,282 @@
|
|
1
|
+
require 'capistrano/ext/windows_server/target_system_check'
|
2
|
+
|
1
3
|
# Capistrano 1 and 2 have different configuration locations
|
2
4
|
configuration = Capistrano::Configuration.respond_to?(:instance) ?
|
3
5
|
Capistrano::Configuration.instance(:must_exist) :
|
4
6
|
Capistrano.configuration(:must_exist)
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
if TargetSystemCheck.windows?
|
9
|
+
configuration.load do
|
10
|
+
set :scm, :git
|
11
|
+
set :deploy_via, :remote_cache
|
12
|
+
set :shared_dir, "."
|
13
|
+
set :repository_cache, "current"
|
14
|
+
set :scm_verbose, true
|
15
|
+
set :use_sudo, false
|
16
|
+
set :default_shell, false
|
14
17
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
+
def strip_cygdrive(path)
|
19
|
+
path.sub /\/cygdrive\/([c-z])\//, '\1:/'
|
20
|
+
end
|
18
21
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
# Probably not compatible with multiple roles with different PATHs
|
24
|
-
def system_path
|
25
|
-
return @system_path if @system_path
|
22
|
+
def latest_release
|
23
|
+
strip_cygdrive current_path
|
24
|
+
end
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
26
|
+
# Probably not compatible with multiple roles with different PATHs
|
27
|
+
def system_path
|
28
|
+
return @system_path if @system_path
|
29
|
+
|
30
|
+
@system_path = "/bin:" + "/usr/bin:"
|
31
|
+
run('echo $PATH') { |channel, stream, data| @system_path << data.strip }
|
32
|
+
@system_path
|
33
|
+
end
|
34
|
+
|
35
|
+
task :path do
|
36
|
+
puts system_path.inspect
|
37
|
+
end
|
38
|
+
|
39
|
+
def run_ruby_cmd(cmd)
|
40
|
+
bundler_git_path = "#{File.dirname(bundler_git_command)}:" rescue nil
|
41
|
+
run "cd #{current_path} && PATH='#{bundler_git_path}#{system_path}' ruby -S #{cmd}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def bundle_exec(cmd)
|
45
|
+
if gemfile_present?
|
46
|
+
run_ruby_cmd "bundle exec #{cmd}"
|
47
|
+
else
|
48
|
+
run_ruby_cmd cmd
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def application_server
|
53
|
+
app_server rescue :mongrel
|
54
|
+
end
|
55
|
+
|
56
|
+
def gemfile_present?
|
57
|
+
File.exists? "Gemfile"
|
46
58
|
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def application_server
|
50
|
-
app_server rescue :mongrel
|
51
|
-
end
|
52
|
-
|
53
|
-
def gemfile_present?
|
54
|
-
File.exists? "Gemfile"
|
55
|
-
end
|
56
59
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
60
|
+
namespace :deploy do
|
61
|
+
desc "Update the code on the server by doing a git reset --hard <ref> in the current/ directory"
|
62
|
+
task :update_code do
|
63
|
+
# update_repository_cache will attempt to clean out the repository; we must prevent that.
|
64
|
+
# /bin/git below is where www.windowsgit.com's windows git/ssh installation puts the git executable.
|
65
|
+
# This creates a git wrapper that goes in $PATH before /bin, which will filter out any `git clean` commands.
|
66
|
+
run "/bin/mkdir -p '#{shared_path}/bin'"
|
67
|
+
run <<-RUN
|
68
|
+
echo 'if [ "$1" != "clean" ]; then /bin/git $*; fi' > "#{shared_path}/bin/git.exe"
|
69
|
+
RUN
|
70
|
+
alter_path_cmd = "export PATH=#{shared_path}/bin:$PATH # Required for capistrano-windows-server"
|
71
|
+
run <<-RUN
|
72
|
+
if ! /bin/grep '#{alter_path_cmd}' ~/.bashrc > /dev/null; then echo '#{alter_path_cmd}' >> ~/.bashrc; fi
|
73
|
+
RUN
|
71
74
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
continue = false
|
77
|
-
rescue
|
78
|
-
puts "Failed to check out git. If the error was 'fatal: The remote end hung up unexpectedly', this is due to a cygwin ssh bug."
|
79
|
-
puts "It often works to just try again repeatedly (a lot! 30+ times for an initial clone - it's like playing the lottery :-)"
|
80
|
-
@try_again_response ||= Capistrano::CLI.ui.ask("Keep trying? [Y/n]: ").to_s.chomp
|
81
|
-
unless @try_again_response.empty? || @try_again_response.downcase == 'y'
|
75
|
+
continue = true
|
76
|
+
while continue
|
77
|
+
begin
|
78
|
+
strategy.send 'update_repository_cache'
|
82
79
|
continue = false
|
83
|
-
|
80
|
+
rescue
|
81
|
+
puts "Failed to check out git. If the error was 'fatal: The remote end hung up unexpectedly', this is due to a cygwin ssh bug."
|
82
|
+
puts "It often works to just try again repeatedly (a lot! 30+ times for an initial clone - it's like playing the lottery :-)"
|
83
|
+
@try_again_response ||= Capistrano::CLI.ui.ask("Keep trying? [Y/n]: ").to_s.chomp
|
84
|
+
unless @try_again_response.empty? || @try_again_response.downcase == 'y'
|
85
|
+
continue = false
|
86
|
+
raise $!
|
87
|
+
end
|
84
88
|
end
|
85
89
|
end
|
90
|
+
finalize_update
|
86
91
|
end
|
87
|
-
finalize_update
|
88
|
-
end
|
89
92
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
93
|
+
desc <<-DESC
|
94
|
+
Prepares one or more servers for deployment. Before you can use any \
|
95
|
+
of the Capistrano deployment tasks with your project, you will need to \
|
96
|
+
make sure all of your servers have been prepared with `cap deploy:setup'. When \
|
97
|
+
you add a new server to your cluster, you can easily run the setup task \
|
98
|
+
on just that server by specifying the HOSTS environment variable:
|
96
99
|
|
97
|
-
|
100
|
+
$ cap HOSTS=new.server.com deploy:setup
|
98
101
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
102
|
+
It is safe to run this task on servers that have already been set up; it \
|
103
|
+
will not destroy any deployed revisions or data.
|
104
|
+
DESC
|
105
|
+
task :setup do
|
106
|
+
dirs = [deploy_to]
|
107
|
+
run "/bin/mkdir -p #{dirs.join(' ')} && /bin/chmod g+w #{dirs.join(' ')}"
|
105
108
|
|
106
|
-
|
107
|
-
|
109
|
+
if exists?(:repository_host_key)
|
110
|
+
run "if ! /bin/grep '#{repository_host_key}' ~/.ssh/known_hosts > /dev/null; then echo '#{repository_host_key}' >> ~/.ssh/known_hosts; fi"
|
111
|
+
end
|
108
112
|
end
|
109
|
-
end
|
110
113
|
|
111
|
-
|
112
|
-
|
113
|
-
task removed_task do; end
|
114
|
-
end
|
115
|
-
namespace :rollback do
|
116
|
-
%w(code default).each do |removed_task|
|
114
|
+
# Clear out tasks that are not appropriate on Windows
|
115
|
+
%w(finalize_update create_symlink symlink cleanup).each do |removed_task|
|
117
116
|
task removed_task do; end
|
118
117
|
end
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
bundle_exec "rake db:migrate RAILS_ENV=#{ENV['RAILS_ENV'] || rails_env}"
|
124
|
-
end
|
125
|
-
|
126
|
-
desc "Start mongrel"
|
127
|
-
task :start do
|
128
|
-
return unless application_server == :mongrel
|
129
|
-
mongrel_instances.each do |n|
|
130
|
-
run "net start #{mongrel_instance_prefix}#{n}; true"
|
118
|
+
namespace :rollback do
|
119
|
+
%w(code default).each do |removed_task|
|
120
|
+
task removed_task do; end
|
121
|
+
end
|
131
122
|
end
|
132
|
-
end
|
133
123
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
mongrel_instances.each do |n|
|
138
|
-
run "net stop #{mongrel_instance_prefix}#{n}; true"
|
124
|
+
desc "Run pending migrations. Override the default rails environment with RAILS_ENV"
|
125
|
+
task :migrate do
|
126
|
+
bundle_exec "rake db:migrate RAILS_ENV=#{ENV['RAILS_ENV'] || rails_env}"
|
139
127
|
end
|
140
|
-
end
|
141
128
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
129
|
+
desc "Start mongrel"
|
130
|
+
task :start do
|
131
|
+
return unless application_server == :mongrel
|
132
|
+
mongrel_instances.each do |n|
|
133
|
+
run "net start #{mongrel_instance_prefix}#{n}; true"
|
134
|
+
end
|
148
135
|
end
|
149
|
-
end
|
150
136
|
|
151
|
-
|
152
|
-
|
153
|
-
task :setup do
|
137
|
+
desc "Stop mongrel"
|
138
|
+
task :stop do
|
154
139
|
return unless application_server == :mongrel
|
155
140
|
mongrel_instances.each do |n|
|
156
|
-
run "
|
157
|
-
bundle_exec "mongrel_rails service::install -e #{rails_env} -N #{mongrel_instance_prefix}#{n} -p #{base_port + n - mongrel_instances.first}; true"
|
158
|
-
run %Q(sc.exe config "#{mongrel_instance_prefix}#{n}" start= auto type= interact type= own; true)
|
141
|
+
run "net stop #{mongrel_instance_prefix}#{n}; true"
|
159
142
|
end
|
160
143
|
end
|
161
144
|
|
162
|
-
desc "
|
163
|
-
task :
|
145
|
+
desc "Restart mongrel"
|
146
|
+
task :restart do
|
147
|
+
return unless application_server == :mongrel
|
164
148
|
mongrel_instances.each do |n|
|
165
|
-
|
149
|
+
run "net stop #{mongrel_instance_prefix}#{n}; true"
|
150
|
+
run "net start #{mongrel_instance_prefix}#{n}; true"
|
166
151
|
end
|
167
152
|
end
|
168
|
-
end
|
169
153
|
|
170
|
-
|
171
|
-
|
154
|
+
namespace :mongrel do
|
155
|
+
desc "Create mongrel services"
|
156
|
+
task :setup do
|
157
|
+
return unless application_server == :mongrel
|
158
|
+
mongrel_instances.each do |n|
|
159
|
+
run "/bin/mkdir -p #{current_path}/{tmp,log}" # These are often not under version control, but their absence keeps mongrel from recognizing the rails app
|
160
|
+
bundle_exec "mongrel_rails service::install -e #{rails_env} -N #{mongrel_instance_prefix}#{n} -p #{base_port + n - mongrel_instances.first}; true"
|
161
|
+
run %Q(sc.exe config "#{mongrel_instance_prefix}#{n}" start= auto type= interact type= own; true)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
desc "Remove mongrel services"
|
166
|
+
task :remove do
|
167
|
+
mongrel_instances.each do |n|
|
168
|
+
bundle_exec "mongrel_rails service::remove -N #{mongrel_instance_prefix}#{n}; true"
|
169
|
+
end
|
170
|
+
end
|
172
171
|
end
|
173
172
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
specify additional environment variables to pass to rake via the \
|
178
|
-
asset_env variable. The defaults are:
|
173
|
+
namespace :assets do
|
174
|
+
task :symlink, :roles => :web, :except => { :no_release => true } do
|
175
|
+
end
|
179
176
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
run "rm -rf #{current_path}/public/#{assets_prefix}"
|
186
|
-
bundle_exec "rake RAILS_ENV=#{rails_env} #{asset_env} assets:precompile"
|
187
|
-
end
|
177
|
+
desc <<-DESC
|
178
|
+
Run the asset precompilation rake task. You can specify the full path \
|
179
|
+
to the rake executable by setting the rake variable. You can also \
|
180
|
+
specify additional environment variables to pass to rake via the \
|
181
|
+
asset_env variable. The defaults are:
|
188
182
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
183
|
+
set :rake, "rake"
|
184
|
+
set :rails_env, "production"
|
185
|
+
set :asset_env, "RAILS_GROUPS=assets"
|
186
|
+
DESC
|
187
|
+
task :precompile, :roles => :web, :except => { :no_release => true } do
|
188
|
+
run "rm -rf #{current_path}/public/#{assets_prefix}"
|
189
|
+
bundle_exec "rake RAILS_ENV=#{rails_env} #{asset_env} assets:precompile"
|
190
|
+
end
|
195
191
|
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
192
|
+
desc <<-DESC
|
193
|
+
Run the asset clean rake task. Use with caution, this will delete \
|
194
|
+
all of your compiled assets. You can specify the full path \
|
195
|
+
to the rake executable by setting the rake variable. You can also \
|
196
|
+
specify additional environment variables to pass to rake via the \
|
197
|
+
asset_env variable. The defaults are:
|
198
|
+
|
199
|
+
set :rake, "rake"
|
200
|
+
set :rails_env, "production"
|
201
|
+
set :asset_env, "RAILS_GROUPS=assets"
|
202
|
+
DESC
|
203
|
+
task :clean, :roles => :web, :except => { :no_release => true } do
|
204
|
+
bundle_exec "rake RAILS_ENV=#{rails_env} #{asset_env} assets:clean"
|
205
|
+
end
|
202
206
|
end
|
203
207
|
end
|
204
|
-
end
|
205
|
-
|
206
|
-
desc "Run a rake command in COMMAND. RAILS_ENV for the configured environment will be included; it can be overridden by setting RAILS_ENV"
|
207
|
-
task :rake do
|
208
|
-
raise "Specify the command with COMMAND='some:task with_arguments'" unless ENV['COMMAND']
|
209
|
-
bundle_exec "rake #{ENV['COMMAND']} RAILS_ENV=#{ENV['RAILS_ENV'] || rails_env}"
|
210
|
-
end
|
211
|
-
|
212
|
-
desc "Run a rubygems (gem) command in COMMAND"
|
213
|
-
task :rubygems do
|
214
|
-
raise "Specify the command with COMMAND='install rails'" unless ENV['COMMAND']
|
215
|
-
bundle_exec "gem #{ENV['COMMAND']}"
|
216
|
-
end
|
217
|
-
|
218
|
-
desc "Run a git command in COMMAND"
|
219
|
-
task :git do
|
220
|
-
raise "Specify the command with COMMAND. eg: COMMAND='diff HEAD^^'" unless ENV['COMMAND']
|
221
|
-
run "cd #{current_path} && /bin/git #{ENV['COMMAND']}"
|
222
|
-
end
|
223
208
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
209
|
+
desc "Run a rake command in COMMAND. RAILS_ENV for the configured environment will be included; it can be overridden by setting RAILS_ENV"
|
210
|
+
task :rake do
|
211
|
+
raise "Specify the command with COMMAND='some:task with_arguments'" unless ENV['COMMAND']
|
212
|
+
bundle_exec "rake #{ENV['COMMAND']} RAILS_ENV=#{ENV['RAILS_ENV'] || rails_env}"
|
213
|
+
end
|
214
|
+
|
215
|
+
desc "Run a rubygems (gem) command in COMMAND"
|
216
|
+
task :rubygems do
|
217
|
+
raise "Specify the command with COMMAND='install rails'" unless ENV['COMMAND']
|
218
|
+
bundle_exec "gem #{ENV['COMMAND']}"
|
219
|
+
end
|
220
|
+
|
221
|
+
desc "Run a git command in COMMAND"
|
222
|
+
task :git do
|
223
|
+
raise "Specify the command with COMMAND. eg: COMMAND='diff HEAD^^'" unless ENV['COMMAND']
|
224
|
+
run "cd #{current_path} && /bin/git #{ENV['COMMAND']}"
|
230
225
|
end
|
231
226
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
227
|
+
namespace :bundle do
|
228
|
+
desc "Execute a COMMAND with bundle exec"
|
229
|
+
task :default do
|
230
|
+
raise "No Gemfile detected" unless gemfile_present?
|
231
|
+
raise "Specify the command with COMMAND. eg: COMMAND='rake db:migrate'" unless ENV['COMMAND']
|
232
|
+
bundle_exec ENV['COMMAND']
|
233
|
+
end
|
239
234
|
|
240
|
-
|
235
|
+
desc <<-DESC
|
236
|
+
Install the current Bundler environment. By default, gems will be \
|
237
|
+
installed to the shared/bundle path. Gems in the development and \
|
238
|
+
test group will not be installed. The install command is executed \
|
239
|
+
with the --deployment and --quiet flags. If the bundle cmd cannot \
|
240
|
+
be found then you can override the bundle_cmd variable to specifiy \
|
241
|
+
which one it should use.
|
241
242
|
|
242
|
-
|
243
|
-
in your deploy.rb file.
|
243
|
+
You can override any of these defaults by setting the variables shown below.
|
244
244
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
245
|
+
N.B. bundle_roles must be defined before you require 'bundler/capistrano' \
|
246
|
+
in your deploy.rb file.
|
247
|
+
|
248
|
+
set :bundle_dir, File.join(fetch(:shared_path), 'bundle')
|
249
|
+
set :bundle_flags, "--deployment --quiet"
|
250
|
+
set :bundle_without, [:development, :test]
|
251
|
+
set :bundle_roles, :app # e.g. [:app, :batch]
|
252
|
+
DESC
|
253
|
+
task :install do
|
254
|
+
raise "No Gemfile detected" unless gemfile_present?
|
255
|
+
bundle_flags = fetch(:bundle_flags, "--deployment --quiet")
|
256
|
+
bundle_dir = '../bundle'
|
257
|
+
bundle_without = [*fetch(:bundle_without, [:development, :test])].compact
|
258
|
+
current_release = fetch(:current_path)
|
259
|
+
if current_release.to_s.empty?
|
260
|
+
raise error_type.new("Cannot detect current release path - make sure you have deployed at least once.")
|
261
|
+
end
|
262
|
+
args = [bundle_flags.to_s]
|
263
|
+
args << "--path #{bundle_dir}" unless bundle_dir.to_s.empty?
|
264
|
+
args << "--without #{bundle_without.join(" ")}" unless bundle_without.empty?
|
262
265
|
|
263
|
-
|
266
|
+
run_ruby_cmd "bundle install #{args.join(' ')}"
|
267
|
+
end
|
264
268
|
end
|
265
|
-
end
|
266
269
|
|
267
|
-
|
268
|
-
|
270
|
+
after 'deploy:setup', 'deploy:update_code'
|
271
|
+
after 'deploy:setup', 'deploy:mongrel:setup'
|
269
272
|
|
273
|
+
end
|
274
|
+
else
|
275
|
+
# Call this method in a stage's configuration file (eg: deploy/staging.rb)
|
276
|
+
# if that deploy target is not a Windows server.
|
277
|
+
# This method is a no-op, but if that method is called from a stage recipe,
|
278
|
+
# the capistrano-windows-server code does not load for that target.
|
279
|
+
# Use this when some of your servers are Windows and some are Linux, etc.
|
280
|
+
def not_windows!
|
281
|
+
end
|
270
282
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module TargetSystemCheck
|
2
|
+
class << self
|
3
|
+
def windows?
|
4
|
+
not recipe_disables_windows? stage_file
|
5
|
+
end
|
6
|
+
|
7
|
+
# @return current stage name
|
8
|
+
def stage_argument
|
9
|
+
ARGV.first
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [File] the stage configuration file
|
13
|
+
def stage_file
|
14
|
+
File.open "config/deploy/#{stage_argument}.rb"
|
15
|
+
end
|
16
|
+
|
17
|
+
def recipe_disables_windows?(file)
|
18
|
+
file.to_a.grep(/^\s*not_windows!(\(\s*\))?\s*(#.*)?$/).any?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
CHANGED
@@ -1,66 +1,62 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-windows-server
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 6
|
9
|
-
- 1
|
10
|
-
version: 0.6.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Edward Anderson
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
12
|
+
date: 2012-11-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
23
15
|
name: capistrano
|
24
|
-
|
25
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
26
17
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
|
32
|
-
- 0
|
33
|
-
version: "0"
|
34
|
-
requirement: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
36
23
|
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
37
31
|
name: jeweler
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.6.4
|
38
38
|
type: :development
|
39
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
41
|
none: false
|
41
|
-
requirements:
|
42
|
+
requirements:
|
42
43
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 7
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 6
|
48
|
-
- 4
|
44
|
+
- !ruby/object:Gem::Version
|
49
45
|
version: 1.6.4
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
46
|
+
description: ! 'This gem modifies capistrano recipes to allow deploys to windows machines.
|
47
|
+
|
48
|
+
Several nuances such as the lack of symlinks make the deploy a little different,
|
49
|
+
but it''s better than doing it by hand.
|
50
|
+
|
51
|
+
See the github page for instruction on how to set up Windows to get it ready for
|
52
|
+
a deploy.'
|
55
53
|
email: edward.anderson@scimedsolutions.com
|
56
54
|
executables: []
|
57
|
-
|
58
55
|
extensions: []
|
59
|
-
|
60
|
-
extra_rdoc_files:
|
56
|
+
extra_rdoc_files:
|
61
57
|
- LICENSE.txt
|
62
58
|
- README.md
|
63
|
-
files:
|
59
|
+
files:
|
64
60
|
- .document
|
65
61
|
- Gemfile
|
66
62
|
- Gemfile.lock
|
@@ -71,39 +67,33 @@ files:
|
|
71
67
|
- capistrano-windows-server.gemspec
|
72
68
|
- lib/capistrano-windows-server.rb
|
73
69
|
- lib/capistrano/ext/windows_server.rb
|
74
|
-
|
70
|
+
- lib/capistrano/ext/windows_server/target_system_check.rb
|
75
71
|
homepage: http://github.com/nilbus/capistrano-windows-server
|
76
|
-
licenses:
|
72
|
+
licenses:
|
77
73
|
- MIT
|
78
74
|
post_install_message:
|
79
75
|
rdoc_options: []
|
80
|
-
|
81
|
-
require_paths:
|
76
|
+
require_paths:
|
82
77
|
- lib
|
83
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
79
|
none: false
|
85
|
-
requirements:
|
86
|
-
- -
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
|
89
|
-
segments:
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
segments:
|
90
85
|
- 0
|
91
|
-
|
92
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
hash: 2799260122082025510
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
88
|
none: false
|
94
|
-
requirements:
|
95
|
-
- -
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
|
98
|
-
segments:
|
99
|
-
- 0
|
100
|
-
version: "0"
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
101
93
|
requirements: []
|
102
|
-
|
103
94
|
rubyforge_project:
|
104
|
-
rubygems_version: 1.
|
95
|
+
rubygems_version: 1.8.24
|
105
96
|
signing_key:
|
106
97
|
specification_version: 3
|
107
98
|
summary: Deploy Ruby on Rails applications with Capistrano to Windows servers
|
108
99
|
test_files: []
|
109
|
-
|