Reputation: 554
I'm trying to deploy my rails application with capistrano, but I'm having some trouble running my migrations. In my development environment I just use sqlite as my database, but on my production server I use MySQL.
The problem is that I want the migrations to run from my server and not my local machine, as I am not able to connect to my database from a remote location.
My server setup: A debian box running ngnix, passenger, mysql and a git repository.
What is the easiest way to do this?
update:
Here's my deploy script: (i replaced my actual domain with example.com)
set :application, "example.com" set :domain, "example.com" set :scm, :git set :repository, "[email protected]:project.git" set :use_sudo, false set :deploy_to, "/var/www/example.com" role :web, domain role :app, domain role :db, "localhost", :primary => true after "deploy", "deploy:migrate"
When I run cap deploy, everything is working fine until it tries to run the migration. Here's the error I'm getting:
** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2)) connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2)))
This is why I need to run the migration from the server and not from my local machine.
Any ideas?
Upvotes: 13
Views: 19049
Reputation: 10564
Have you added your deploying user as a mysql user on the server? I reckon the localhost is the server referring to itself not your local machine.
Also you haven't defined your user in your deploy script:
set :user, "deploy_user_name"
role :web, domain
role :app, domain
role :db, domain, :primary => true
Upvotes: 7
Reputation: 29135
Try to add
after "deploy", "deploy:migrate"
in your config/deploy.rb file. This will run a migration on your server upon a successful deployment of your project.
Upvotes: 41