2015-04-20 2 views
4

Je n'arrive vraiment pas à trouver une explication précise sur la raison pour laquelle vous devriez utiliser la même base de données en développement qu'en production. Personnellement, j'adore utiliser sqlite3 en développement (il est léger, facile à utiliser, et possède un outil d'interface graphique de navigateur sqlite), puis utilise postgres en production avec heroku. Mais, je continue à entendre si de RBates ou Michael Hartl ou quelqu'un d'autre que vous devriez utiliser la même base de données dans les deux, pourquoi est-ce exactement?Rails bases de données, pourquoi utiliser le même SGBD pour le développement et la production?

+2

Pour commencer: essayez ce qui suit sur SQLite et Postgres: 'create table foo (foo_date date); insérer dans les valeurs foo ('2015-02-31'), ('XXX'); sélectionnez * de foo; ' –

+0

ok, donc votre énonciation il ya beaucoup plus que vous pouvez faire avec elle en mode dev? –

+3

SQLite est assez limité par rapport à Postgres. L'impossibilité de valider une valeur date est juste une. Si votre application pour une raison quelconque envoie une date invalide à la base de données, tous vos tests passeraient mais cela échouerait lamentablement sur la production. Il y a beaucoup plus de choses comme ça. En un mot: tester sur un SGBD différent de celui que vous utilisez en production est futile, car vous ne savez toujours pas si votre application fonctionnera en production. –

Répondre

7

J'ai utilisé SQLite3 en développement et PostgreSQL en production pour mes premiers projets Rails. Aujourd'hui, j'ai transféré l'environnement de développement de mon projet actuel vers PostgreSQL. Lorsque j'ai déployé mon application pour la première fois sur Heroku, j'ai passé deux jours à corriger les erreurs causées par les migrations de bases de données. Les migrations ont bien fonctionné dans SQLite3 mais ont échoué dans PostgreSQL. Si j'avais utilisé une DB, j'aurais évité cette fois le débogage.

Ce matin, j'essayais d'utiliser des requêtes SQL. Si vous n'utilisez que des requêtes de rails, vous pouvez vous en sortir en changeant de DB. Lorsque vous commencez à écrire du code SQL, vous commencez à voir les problèmes. Découvrez ma question et la solution ici: Ruby strftime '%-m' not working in query

Si j'avais déjà eu mes requêtes SQL d'origine à travailler avec strftime, ils auraient brisé la production. Épargnez-vous le futur mal de tête en créant des environnements de développement et de production correspondants.

+0

garçon howdy. très bon conseil. – Greg