Назовем окружение на сервере заказчика production, а на нашем сервере staging. Какая разница между этими двумя окружениями?
Учитывая, что мы разделили эти два случая на два разных окружения, то с database.yml все просто. Секция production копируется в staging и вносятся необходимые коррективы.
Надо не забыть скопировать config/environments/production.rb в config/environments/staging.rb, иначе монгрел даже не запустится.
Теперь насчет разных настроек выкладывания на сервер. Обычно в файле config/deploy.rb идет такая секция:
Заменим ее на:
deploy_to_env = ENV[“RAILS_ENV”] ||= “staging” if deploy_to_env == “staging” role :web, “#{application}.testserver.ru” role :app, “#{application}.testserver.ru” role :db, “#{application}.testserver.ru”, :primary => true set :deploy_to, “/var/www/testserver.ru/#{application}” else role :web, “#{application}.hosting.ru” role :app, “#{application}.hosting.ru” role :db, “#{application}.hosting.ru”, :primary => true set :deploy_to, “/var/www/hosting.ru/#{application}” endЧто касается config/mongrel_cluster.yml, то на счет этого файла предлагают использовать команду put с генерацией из шаблона, которая предоставляется capistrano, но я предпочел пойти другим путем и сделать копирование файлов. В config/deploy.rb добавляется следующее задание:
В config/mongrel_cluster.staging.yml не забыть вписать другой environment.
Теперь надо просто сделать rake deploy RAILS_ENV=production