I share a common database for my staging and production site. I would
like to share image uploads as well in
/var/www/my_site/staging/current/public/system
from var/www/my_site:
|-- current -> /var/www/my_site/releases/20090409190216
|-- releases
. . .
|-- shared
| |-- log
| |-- pids
| `-- system
`-- staging
|-- current -> /var/www/my_site/staging/releases/20090409185152
|-- releases
`-- shared
I want, paperclip to store images from both distributions in /var/www/
my_site/staging.
Since capistrano already creates a link to #{shared_path}/system, I
just need to map:
/var/www/my_site/staging/shared/system to --> /var/www/my_site/shared/
system
(http://github.com/jamis/capistrano/blob/
2ce539d87c928f41d82f7bfda84e228d3948d82b/lib/capistrano/recipes/
deploy.rb#L229)
So I have the following deploy.rb:
--------------------------------------
set :stages, %w(staging production)
set :default_stage, "staging"
require 'capistrano/ext/multistage'
set :application, "my_site"
set :repository, "http://svn.my_site.com/"
set :deploy_to, "/var/www/#{application}"
set :user, "passenger"
set :keep_releases, 3 # (doesn't seem to work)
role :app, "my_server"
role :web, "my_server"
role :db, "my_server", :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
end
# ==============================
# Uploads
# ==============================
namespace :uploads do
desc <<-EOD
[internal] Creates the symlink to uploads shared folder
for the most recently deployed version.
EOD
task :symlink, :except => { :no_release => true } do
run "rm -rf #{current_path}/public/system"
run "ln -nfs /var/www/my_site/shared/system #{current_path}/public/
system"
end
after "deploy:finalize_update", "uploads:symlink"
end
--------------------------------------
I am having trouble getting that callback to work, but am wondering if
there is not a much easier way to do this (or more robust, am I
missing something). I thought I could fix things by moving that after
"deploy:" command to the front of the script, and out of the
namespace. I also what _nothing_ to happen when I type:
cap production deploy.
Thanks in advance,
Tim
--~--~---------~--~----~------------~-------~--~----~
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at http://groups.google.com/group/capistrano
-~----------~----~----~----~------~----~------~--~---