Pat Maddox
2006-Apr-03 21:50 UTC
[Rails] Capistrano - how do I set up the database config?
My app is set up without database.yml in version control. I created a
shared_path/config dir, and put database.yml in it. After I update
the code, I want to link the app''s database.yml file to the shared
config. So I added this task
desc ''Copy the database config''
task :after_update_code, :roles => :app do
run "ln -s #{shared_path}/config/database.yml
#{current_path}/config/database.yml"
end
Unfortunately that doesnt work, because update_code is in a
transaction, so current_path points to the app that''s currently
running, rather than the most recently checked out code version. So I
get the following error:
* executing task after_update_code
* executing "ln -s ~/apps/blog/shared/config/database.yml
~/apps/blog/current/config/database.yml"
servers: ["www.mydomain.com"]
[www.mydomain.com] executing command
** [out :: www.mydomain.com] ln:
/home/pergesu/apps/blog/current/config/database.yml: File exists
command finished
rake aborted!
command "ln -s ~/apps/blog/shared/config/database.yml
~/apps/blog/current/config/database.yml" failed on www.mydomain.com
In the past I''ve put the ln in the restart task, but that''s an
ugly
hack, plus it doesn''t allow me to "rake remote:restart" - the
file
already exists, so it fails. I have to do a full deploy just to
restart it. So how do I do what I want?
Finally, I have a question about running migrations. Does rake deploy
just do remote:update_code and remote:restart? Or does it do other
stuff? If I need to run migrations, it''d be best if I can update the
code, run migrations, and restart the app. "rake remote:update_code;
rake remote:migrate; rake remote:restart", instead of what I''m
currently doing now chich is "rake deploy; rake remote:migrate; rake
remote:restart"
Thanks for any info.
Pat
Jeff Coleman
2006-Apr-03 22:32 UTC
[Rails] Re: Capistrano - how do I set up the database config?
Pat, I''m afraid I can''t help with your other issues, but there is a "deploy_with_migrations" task in the remote namespace. rake remote:deploy_with_migrations Jeff Pat Maddox wrote:> My app is set up without database.yml in version control. I created a > shared_path/config dir, and put database.yml in it. After I update > the code, I want to link the app''s database.yml file to the shared > config. So I added this task > > desc ''Copy the database config'' > task :after_update_code, :roles => :app do > run "ln -s #{shared_path}/config/database.yml > #{current_path}/config/database.yml" > end > > Unfortunately that doesnt work, because update_code is in a > transaction, so current_path points to the app that''s currently > running, rather than the most recently checked out code version. So I > get the following error: > > * executing task after_update_code > * executing "ln -s ~/apps/blog/shared/config/database.yml > ~/apps/blog/current/config/database.yml" > servers: ["www.mydomain.com"] > [www.mydomain.com] executing command > ** [out :: www.mydomain.com] ln: > /home/pergesu/apps/blog/current/config/database.yml: File exists > command finished > rake aborted! > command "ln -s ~/apps/blog/shared/config/database.yml > ~/apps/blog/current/config/database.yml" failed on www.mydomain.com > > In the past I''ve put the ln in the restart task, but that''s an ugly > hack, plus it doesn''t allow me to "rake remote:restart" - the file > already exists, so it fails. I have to do a full deploy just to > restart it. So how do I do what I want? > > Finally, I have a question about running migrations. Does rake deploy > just do remote:update_code and remote:restart? Or does it do other > stuff? If I need to run migrations, it''d be best if I can update the > code, run migrations, and restart the app. "rake remote:update_code; > rake remote:migrate; rake remote:restart", instead of what I''m > currently doing now chich is "rake deploy; rake remote:migrate; rake > remote:restart" > > Thanks for any info. > > Pat-- Posted via http://www.ruby-forum.com/.
Pat Maddox
2006-Apr-04 00:07 UTC
[Rails] Re: Capistrano - how do I set up the database config?
Hey Jeff, Thanks for the tip on deploy_with_migrations I found out that I need to use release_path instead of current_path inside after_update_code, because update_code doesn''t do any symlinking. release_path is the path to the release that''s being checked out. Pat On 4/3/06, Jeff Coleman <progressions@gmail.com> wrote:> Pat, > > I''m afraid I can''t help with your other issues, but there is a > "deploy_with_migrations" task in the remote namespace. > > rake remote:deploy_with_migrations > > Jeff > > Pat Maddox wrote: > > My app is set up without database.yml in version control. I created a > > shared_path/config dir, and put database.yml in it. After I update > > the code, I want to link the app''s database.yml file to the shared > > config. So I added this task > > > > desc ''Copy the database config'' > > task :after_update_code, :roles => :app do > > run "ln -s #{shared_path}/config/database.yml > > #{current_path}/config/database.yml" > > end > > > > Unfortunately that doesnt work, because update_code is in a > > transaction, so current_path points to the app that''s currently > > running, rather than the most recently checked out code version. So I > > get the following error: > > > > * executing task after_update_code > > * executing "ln -s ~/apps/blog/shared/config/database.yml > > ~/apps/blog/current/config/database.yml" > > servers: ["www.mydomain.com"] > > [www.mydomain.com] executing command > > ** [out :: www.mydomain.com] ln: > > /home/pergesu/apps/blog/current/config/database.yml: File exists > > command finished > > rake aborted! > > command "ln -s ~/apps/blog/shared/config/database.yml > > ~/apps/blog/current/config/database.yml" failed on www.mydomain.com > > > > In the past I''ve put the ln in the restart task, but that''s an ugly > > hack, plus it doesn''t allow me to "rake remote:restart" - the file > > already exists, so it fails. I have to do a full deploy just to > > restart it. So how do I do what I want? > > > > Finally, I have a question about running migrations. Does rake deploy > > just do remote:update_code and remote:restart? Or does it do other > > stuff? If I need to run migrations, it''d be best if I can update the > > code, run migrations, and restart the app. "rake remote:update_code; > > rake remote:migrate; rake remote:restart", instead of what I''m > > currently doing now chich is "rake deploy; rake remote:migrate; rake > > remote:restart" > > > > Thanks for any info. > > > > Pat > > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >