Normally, I have different mongrel_cluster.yml files but never use
script/spin.
I rewrite deploy:%w(start stop restart) and make tasks for config files.
For example:
== config/deploy.rb
# Common variables
# ...
# Tasks for mongrel
desc "Modified restart task for work ONLY with mongrel cluster"
task :restart do
stop
start
end
desc "Modified start task for work ONLY with mongrel cluster"
task :start do
run "cd #{deploy_to}/current && mongrel_rails cluster::start"
end
desc "Modified stop task for work ONLY with mongrel cluster"
task :stop do
run "cd #{deploy_to}/current && mongrel_rails cluster::stop"
end
# Tasks for config files
namespace :config_files do
require 'erb'
desc "Create config files:database.yml, mongrel_cluster.yml and mailer.rb"
task :default do
database_yml
mongrel_cluster_yml
mailer_rb
local_config_rb
end
desc "Make symlink for config files"
task :symlink do
symlink_database_yml
symlink_mongrel_cluster_yml
symlink_mailer_rb
symlink_local_config_rb
end
desc "Create mongrel_cluster yaml in shared path"
task :mongrel_cluster_yml do
template = File.read(File.join(File.dirname(__FILE__),
"deploy/templates", "mongrel_cluster.erb"))
result = ERB.new(template).result(binding)
run "mkdir -p #{shared_path}/config"
put result, "#{shared_path}/config/mongrel_cluster.yml"
end
desc "Make symlink for mongrel_cluster yaml"
task :symlink_mongrel_cluster_yml do
run "ln -nfs #{shared_path}/config/mongrel_cluster.yml
#{release_path}/config/mongrel_cluster.yml"
end
# More config_files tasks
# ...
# More common tasks
# ...
== config/deploy/templates/mongrel_cluster.erb
---
user: <%= mongrel_username %>
group: <%= mongrel_group %>
cwd: <%= current_path %>
port: "<%= mongrel_port %>"
environment: <%= rails_env || 'production' %>
address: 127.0.0.1
pid_file: <%= shared_path %>/log/mongrel.pid
log_file: <%= shared_path %>/log/mongrel.log
servers: <%= mongrel_servers %>
== config/deploy/stage1.rb
set :user, "foo"
# Mongrel configuration variables
set :mongrel_port, 8008
set :mongrel_servers, 3
set :mongrel_username, user # Change if user is diffent to shell user
set :mongrel_group, user # Change if group is different to shell group
role :app, "foo.com"
role :web, "foo.com"
role :db, "bar.com", :primary => true
# More tasks and variables
#...
== config/deploy/stage2.rb
# Mongrel configuration variables
set :mongrel_port, 3000
set :mongrel_servers, 2
set :mongrel_username, "foobar"
set :mongrel_group, "foobar"
role :app, "baz.com"
role :web, "baz.com"
role :db, "baz.com", :primary => true
# More tasks and variables
#...
More or less :)
Regards
me escribió:
> On a slight tangent, do you also end up with different mongrel_conf
> files?
> If so, how do you deal with what to put in script/spin?
>
>
> I'm torn because I'm now trying to figure out how to do something
> like:
>
> /usr/bin/mongrel_rails cluster::start -C /path/app_name/#{stage}/
> current/config/mongrel_cluster.yml
>
>
>
>
> On Jan 25, 4:10 am, "Rafael G." <[EMAIL PROTECTED]> wrote:
>
>> I use config/deploy.rb for common things (tasks, variables,...), then in
>> every stage put customized things.
>> For example:
>>
>> == config/deploy.rb
>>
>> set :stages, %w(foo bar)
>> set :default_stage, "foo"
>> require 'capistrano/ext/multistage'
>>
>> set :repository, "https://repository/trunk"
>> set :user, "my_user"
>>
>> ...
>>
>> # Some common tasks
>>
>> == config/deploy/foo.rb
>>
>> role :app, "foo.host.com"
>> role :web, "foo.host.com"
>> role :db, "foo.host.com", :primary => true
>>
>> == config/deploy/bar.rb
>>
>> role :app, "bar.host.com", "bar2.host.com"
>> role :web, "bar.host.com"
>> role :db, "bar.host.com", :primary => true
>>
>> In this case. I used differents hosts in differents stages. You can do
>> the same with tasks.
>> Regards
>>
>> me escribió:
>>
>>
>>
>>
>>> In the spirit of DRY, would it still be possible to keep things in one
>>> deploy.rb and just do for the following since (so far, I think) that's
>>> how each of the three deploy files would differ from each other?
>>>
>>> set :deploy_to, "/srv/www/htdocs/#{application}/#{stages}"
>>> set :mongrel_conf, "#{deploy_to}/current/config/mongrel_cluster/
>>> #{stages}.yml"
>>>
>>> On Jan 24, 9:24 am, "Rafael G." <[EMAIL PROTECTED]> wrote:
>>>
>>>> me escribió:
>>>>
>>>>> Forgive me if this is a basic question. I'm attempting to support
>>>>> multiple-stage deployment, and I start out with:
>>>>>
>>>>> set :stages, %w(production staging qa)
>>>>> require 'capistrano/ext/multistage'
>>>>>
>>>>> in my deploy.rb file.
>>>>>
>>>>> But I get an error where it appears to try to find a file based on one
>>>>> of the environment names:
>>>>>
>>>>> $ cap qa deploy:setup
>>>>> * executing `qa'
>>>>> /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/
>>>>> configuration/loading.rb:184:in `find_file_in_load_path': no such file
>>>>> to load -- config/deploy/qa (LoadError)
>>>>>
>>>>> Does this mean I need to have the following files, as well?
>>>>> config/deploy/qa.rb
>>>>> config/deploy/production.rb
>>>>> config/deploy/staging.rb
>>>>>
>>>> Yes :)
>>>>
>>>> --
>>>> Rafael Garcia Ortega
>>>>
>>>> rgo.vcf
>>>> 1KDownload
>>>>
>> --
>> Rafael Garcia Ortega
>>
>> rgo.vcf
>> 1KDownload
>>
> >
>
>
--
Rafael Garcia Ortega
--~--~---------~--~----~------------~-------~--~----~
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/capistrano
-~----------~----~----~----~------~----~------~--~---
begin:vcard
fn;quoted-printable:Rafael Garc=C3=ADa Ortega
n;quoted-printable:Garc=C3=ADa Ortega;Rafael
org:ASPgems S.L.
email;internet:[EMAIL PROTECTED]
tel;work:692686533
x-mozilla-html:FALSE
url:http://www.aspgems.com
version:2.1
end:vcard