Le vrai problème se produit lorsque vous travaillez dans un open-source de l'application Rails qui doit avoir de configurer la base de données de l'adaptateur. Je suis le développement de l'Rails 3, la direction générale de la Graisse Gratuit CRM.
Ma préférence est postgres, mais nous voulons que la base de données par défaut pour être mysql2.
Dans ce cas, Gemfile.lock
doit encore être vérifié avec l'ensemble par défaut des pierres précieuses, mais j'en ai besoin pour ignorer les modifications que j'ai faites sur ma machine. Pour ce faire, j'ai exécuter:
git update-index --assume-unchanged Gemfile.lock
et à l'inverse:
git update-index --no-assume-unchanged Gemfile.lock
Il est également utile d'inclure quelque chose comme le code suivant dans votre Gemfile
. Cette charge de la base de données de l'adaptateur de gem, basé sur votre base de données.yml.
# Loads the database adapter gem based on config/database.yml (Default: mysql2)
# -----------------------------------------------------------------------------
db_gems = {"mysql2" => ["mysql2", ">= 0.2.6"],
"postgresql" => ["pg", ">= 0.9.0"],
"sqlite3" => ["sqlite3"]}
adapter = if File.exists?(db_config = File.join(File.dirname(__FILE__),"config","database.yml"))
db = YAML.load_file(db_config)
# Fetch the first configured adapter from config/database.yml
(db["production"] || db["development"] || db["test"])["adapter"]
else
"mysql2"
end
gem *db_gems[adapter]
# -----------------------------------------------------------------------------
Je ne peux pas dire si c'est une meilleure pratique établie ou non, mais il fonctionne bien pour moi.