Ingo Weiss wrote:
> I was wondering whether any of the list members has found a workflow for
> developing apps locally and deploying them on Dreamhost that actually
> works.
Hi Ingo,
This should cover everything you need to set up. I use separate live
and staging environments, so I''ve included those settings in case you
find it helpful.
1. Make your deploy.rb and other files on your local development
machine and commit them to Svn.
2. Use DH panel to set your hosted directory to app_name/current/public
3. Empty out the "app_name" directory where you will be deploying to.
then run cap setup so it creates the current/shared/releases
directories and symlinks in there.
4. Run cap deploy.
Here''s what I have in my config files:
## config/deploy.rb
set :application, "your_app"
set :user, ''your_user''
set :svn_username, "your_svn_username"
set(:svn_password) { Capistrano::CLI.password_prompt } # (don''t know
if CLI.password is necessary)
set :repository, "http://svn.your_domain.com/trunk"
set :use_sudo, false
set :checkout, "export"
# for ssh key-based passwordless connection (optional)
ssh_options[:keys]
%w(''/Users/your_local_dev_machine_user/.ssh/id_dsa'')
# for separate staging / live environments (optional)
case ENV[''TO'']
when ''production'' :
set :deploy_to, "/home/#{user}/#{application}"
set :rails_env, :production
else
set :deploy_to, "/home/#{user}/stage.#{application}"
set :rails_env, :staging
end
# roles
role :app, application
role :web, application, :no_release => true
role :db, application, :primary => true, :no_release => true
# tasks
desc "Restart the FCGI processes on the app server as a regular user."
task :restart, :roles => :app do
run "#{current_path}/script/process/reaper -d dispatch.fcgi"
end
# for this you should symlink whatever directories you want kept in
current between deployments which aren''t stored in SVN.
desc "Link shared files to carry them forward to current deployment"
task :before_symlink do
run "rmdir #{current_release}/public/uploads"
run "ln -nfs #{deploy_to}/#{shared_dir}/uploads" \
" #{current_release}/public/"
end
## config/environment.rb
# Set environment based on deployment directory name (optional)
# (I use a directory name without .com for local development)
case
File.expand_path(''../../..'',Dir.pwd).gsub(/.*\//,'''')
when ''your_app.com'' :
ENV[''RAILS_ENV''] = ''production''
when ''stage.your_app.com'' :
ENV[''RAILS_ENV''] = ''staging''
end
## config/environments/staging.rb
# create this file as needed for logging/error reporting settings for
your staging environment. (optional)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---