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

Reply via email to