I know, everyone’s Capistrano deployment is unique, however, mine may
be like one I have never seen before.
The app is contained on 1 server. I do not have multiple servers.
The app is actually deployed twice into two different directories.
Now, #2 is causing me my problems. I can handle the database.yml,
environment.rb, etc… just fine. The reason I need to deploy the
application into two different locations is one application is our
production server, the other application is a training environment.
Obviously they have different database backends.
Anyone have an idea on how to accomplish this task?
application into two different locations is one application is our
production server, the other application is a training environment.
Obviously they have different database backends.
Anyone have an idea on how to accomplish this task?
The app is actually deployed twice into two different directories.
I have a similar situation where I have a staging environment and a
production environment on the same server in different directories. The
way I got around it was to write a couple of wrapper tasks that change
deploy_to and then call the deployment task:
task :stage, :roles => [:app, :db, :web] do
set :deploy_to, “/var/www/staging”
deploy
end
Of course, you could do both at the same time:
task :mydeploy, :roles => [:app, :db, :web] do
set :deploy_to, “/var/www/staging”
deploy
Set up another environment in your app… add a new section to your
database.yml, copy your production.rb in config/environments, etc for
your training environment.
desc “Set training environment”
task : training do
role :app, “app server” # possibly the same as production
role :web, “web server” # ditto
set :rails_env, :training
set :deploy_to, “/opt/rails/#{application}/training”
end
The app is contained on 1 server. I do not have multiple servers.
The app is actually deployed twice into two different directories.
Another option just occurred to me, that (if possible) is probably a
much cleaner solution.
Set up another environment in your app… add a new section to your
database.yml, copy your production.rb in config/environments, etc for
your training environment.
Then, set up your webserver to fire up two instances of the same
codebase, one in the training environment and one in production.
I can’t think of any reason why this wouldn’t work, but I also haven’t
tried it, so grain of salt and all that.