capistrano-windows-server 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|