ThuisBalletje
TrainingenBalletje
ConsultancyBalletje
Blog Balletje
RAILS_ENV
10-01-2008

Ruby on Rails Environment Variabele

Een belangrijke variabele omdat deze bepaalt of de development, production of test environment word opgestart. En default is dat development. Dus als ik in mijn artikelen heb gesproken over rake db:migrate, script/console en script/server dan is dat allemaal in de development omgeving. Maar diezelfde commando's werken uiteraard ook in production of de test environment maar dat moet ik even aangeven op de command-line.


Het is echter van belang hoe je de RAILS_ENV variabele gebruikt.

We gaan eerst een demo app maken waarbij we uitgaan van rails 2.

> rails rails_env

> cd rails_env

> script/generate model Gebruiker

We hebben het model alleen nodig voor een migration.

> rake db:migrate

== 1 CreateGebruikers: migrating ==

-- create_table(:gebruikers)

-> 0.0029s

== 1 CreateGebruikers: migrated (0.0031s) ==

We hebben niets aan onze migration veranderd maar omdat deze default t.timestamps bevat zien we toch wat gebeuren.


Rake gaat heel flexibel om met de syntax van RAILS_ENV

In tegenstelling tot script/console.

De volgende voorbeelden werken allemaal in rake.

> rake RAILS_ENV=production db:migrate

> rake db:migrate RAILS_ENV=production

> RAILS_ENV=production rake db:migrate

Dus kies er maar één en voer het uit.

> rake RAILS_ENV=production db:migrate

== 1 CreateGebruikers: migrating ==

-- create_table(:gebruikers)

-> 0.0029s

== 1 CreateGebruikers: migrated (0.0031s) ==

En inderdaad, in mijn db directory heb ik nu een bestand production.sqlite3


script/console

script/console is ideaal als je ad hoc iets moet doen op je production server. Meestal eindigen die sessies in een rake task en als ze erg belangrijk zijn in een Capistrano task in deploy.rb. En als het dus nodig is in production dan is het handig om de syntax te weten. In script/console is dit namelijk de enige manier om het aan de praat te krijgen.

> RAILS_ENV=production script/console

En verder kunnen we RAILS_ENV natuurlijk prima gebruiken om ons eigen custom environment op te starten. Voeg het volgende toe aan je database.yml:

demo:

adapter: sqlite3

database: db/demo_klanten.sqlite3

We hebben nu een demo environment opgezet voor bijvoorbeeld klanten. Uiteraard niet vergeten om in config/environments het bestand demo.rb aan te maken met bijv. de inhoud van production. Dan een migration.

> rake RAILS_ENV=demo db:migrate

Als je vervolgens die omgeving ook op wilt starten dan niet vergeten omdat ook daar mee te geven.

> ./script/server RAILS_ENV=demo

Starting...