David Kahn
2010-Jul-27 02:50 UTC
Capistrano - override default, get/copy source from local
I am working on getting Capistrano running for an app but need to ask it to
download source to a local directory and then send it to the deployment
server via scp/etc (there are reasons for this I won''t get into). Below
is
where I am and what I am trying --- if anyone has done this or can show me
where I am going wrong I''d appreciate it.
I found the following info but it does not seem to work, cap deploy seems to
run the same as without it:
http://rdoc.info/rdoc/capistrano/capistrano/blob/6d540a5d4d04278312f96ae8276e9cacc2d826e5/Capistrano/Deploy/Strategy/Copy.html
set :copy_strategy, :export
set :copy_cache, true
set :copy_exclude, ".git/*"
set :copy_cache, "/tmp/caches/myapp"
Following is my deploy.rb:
set :application, "compare"
set :repository,
"git-9UaJU3cA/F/QT0dZR+AlfA@public.gmane.org:structuralartistry/compare.git"
set :scm, "git"
set :user, "myuser" # The server''s user for deploys
set :scm_passphrase, "mypassphrase"
set :copy_strategy, :export
set :copy_cache, true
set :copy_exclude, ".git/*"
set :copy_cache, "~/Documents/ror/deployment/compare"
set :use_sudo, false
set :branch, "master"
#set :deploy_via, :remote_cache
set :deploy_to, "/home/myuser/webapps/compare"
role :web, "xxx.xxx.xxx.xxx" # Your HTTP
server,
Apache/etc
role :app, "xxx.xxx.xxx.xxx" # This may be
the same
as your `Web` server
role :db, "xxx.xxx.xxx.xxx", :primary => true # This is where
Rails
migrations will run
namespace :deploy do
task :start, :roles => :app do
run "touch #{current_release}/tmp/restart.txt"
end
task :stop, :roles => :app do
# Do nothing.
end
desc "Restart Application"
task :restart, :roles => :app do
run "touch #{current_release}/tmp/restart.txt"
end
end
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
khagimoto
2010-Jul-27 16:35 UTC
Re: Capistrano - override default, get/copy source from local
I use this script, and it works for me (although, I''m sure I could
improve it..) - hope this helps!
================ START deploy.rb ============
set :application, "MY_APP"
set :user, "your_username"
set :admin_runner, user
set :rails_env, ''test''
set :deploy_to, "/path/to/MY_APP/#{application}" # this is the path on
your server you''re deploying to
set :deploy_via, :copy
set :scm, :git
set :repository, "/My/local/git/repository"
set :branch, "master"
set :port, YOUR_PORT_HERE
set :location, "your_domain.com"
role :app, location
role :web, location
role :db, location, :primary => true
namespace :deploy do
desc "Restarting mod_rails with restart.txt"
task :restart, :roles => :app, :except => { :no_release => true } do
run "touch #{current_path}/tmp/restart.txt"
end
[:start, :stop].each do |t|
desc "#{t} task is a no-op with mod_rails"
task t, :roles => :app do ; end
end
# RailsEnv is set in apache my_app vhost config, but also set it in
environment.rb,
# so applicaitons can acccess the RAILS_ENV constant.
task :set_rails_env do
tmp = "#{current_release}/MY_APP/tmp/environment.rb"
final = "#{current_release}/MY_APP/config/environment.rb"
run <<-BASH
echo "ENV[''RAILS_ENV''] ||=
''#{rails_env}''" > #{tmp};
cat #{final} >> #{tmp} && mv #{tmp} #{final};
BASH
end
end
# After the current release has been updated, re-create the symbolic
links on the server
# so that the database.yml and uploads (in shared directory) are
"understood" by the current release
namespace(:customs) do
task :config, :roles => :app do
run <<-CMD
ln -nfs #{shared_path}/system/database.yml #{release_path}/
MY_APP/config/database.yml
CMD
end
task :symlink, :roles => :app do
run <<-CMD
ln -nfs #{shared_path}/system/uploads #{release_path}/MY_APP/
public/uploads
CMD
end
end
after "deploy:update_code", "customs:config"
after "deploy:symlink","customs:symlink"
after "deploy", "deploy:cleanup"
after "deploy:finalize_update", "deploy:set_rails_env"
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
khagimoto
2010-Jul-27 16:40 UTC
Re: Capistrano - override default, get/copy source from local
oops.. Replace this one line in the previous post I made to: set :repository, "ssh://git@your_git_server:your_git_port/path/to/git/ repository" This will get your source from your remote git server. The previous one is assuming that you already have a copy of the git repository locally. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
David Kahn
2010-Jul-28 15:05 UTC
Re: Re: Capistrano - override default, get/copy source from local
Hi, thanks for the script, was very useful! I found that I was missing "set
:deploy_via, :copy". Got it working on the first try.
The part at the bottom on replacing the database.yml was useful too as I
need to both replace this and config.rb. Really minor but found a slightly
simpler way to do this (which puts the callback in the first line rather
than having to place somewhere else) when I was googling around trying to
understand this:
task :after_update_code do
# link from our production/config directory to the release
run "ln -nfs #{deploy_to}/production/config/database.yml
#{release_path}/config/database.yml"
end
VS
task :config, :roles => :app do
run <<-CMD
ln -nfs #{shared_path}/system/database.yml
#{release_path}/MY_APP/config/database.yml
CMD
end
after "deploy:update_code", "customs:config"
On Tue, Jul 27, 2010 at 12:40 PM, khagimoto
<kumi.hagimoto-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> oops..
> Replace this one line in the previous post I made to:
>
> set :repository,
"ssh://git@your_git_server:your_git_port/path/to/git/
> repository"
>
> This will get your source from your remote git server. The previous
> one is assuming that you already have a copy of the git repository
> locally.
>
> --
> 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To unsubscribe from this group, send email to
>
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
> .
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
khagimoto
2010-Jul-29 14:59 UTC
Re: Capistrano - override default, get/copy source from local
Glad that helped, and thanks for the simpler script! I''ll definitely try it on my deploy, too. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.