How to run several instances of ruby on rails application with a single code base

How to run several instances of a rails app with a single code base?

What is the problem?

Sometimes you want to run several instances of the same application on your server. How to easily do this in rails?

The solution :)

Rails offers us the environments, allowing to run an application under different status: development, test or production environment.

We just have to create in the database.yml a specific database connection for each new environment:

  adapter: mysql
  database: prod_one
  username: root
  password: password

and for another instance

  adapter: mysql
  database: prod_two
  username: root
  password: password

and to create a specific configuration file 'prod1.yml' in the directory config/environments/.

After this, you just generate the database schema with the following command:

rake db:migrate RAILS_ENV=prod1

And run the server on a specified port:

./script/server -p 4001 -e prod1

Et voilà ! an instance running on the specified port (4000).

If you want another one (let's say prod2).

Let's create the database instance… rake db:migrate RAILS_ENV=prod2

./script/server -p 4002 -e prod2 … and another instance of the same code base is now running on port 4002.


blog comments powered by Disqus