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
-~----------~----~----~----~------~----~------~--~---

Reply via email to