Gerçek sorun, yapılandırılabilir bir veritabanı adaptörüne sahip olması gereken açık kaynaklı bir Rails uygulaması üzerinde çalışırken ortaya çıkar. Fat Free CRM'nin Rails 3 dalını geliştiriyorum. Benim tercihim postgres, ancak varsayılan veritabanının mysql2 olmasını istiyoruz.
Bu durumda, Gemfile.lock
yine de varsayılan mücevher seti ile kontrol edilmesi gerekiyor, ancak makinemde yaptığım değişiklikleri yok saymam gerekiyor. Bunu başarmak için:
git update-index --assume-unchanged Gemfile.lock
ve tersine çevirmek için:
git update-index --no-assume-unchanged Gemfile.lock
Ayrıca, aşağıdaki kod gibi bir şeyi eklemek için kullanışlıdır Gemfile
. Bu, database.yml dosyasını temel alarak uygun veritabanı bağdaştırıcısını yükler.
# 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]
# -----------------------------------------------------------------------------
Bunun yerleşik bir en iyi uygulama olup olmadığını söyleyemem, ama benim için iyi çalışıyor.