Masalah sebenarnya terjadi ketika Anda bekerja pada aplikasi Rails open-source yang perlu memiliki adaptor database yang dapat dikonfigurasi. Saya sedang mengembangkan cabang Rails 3 dari Fat Free CRM. Preferensi saya adalah postgres, tetapi kami ingin database default menjadi mysql2.
Dalam hal ini, Gemfile.lock
masih perlu diperiksa dengan set permata default, tetapi saya perlu mengabaikan perubahan yang telah saya buat di mesin saya. Untuk mencapai ini, saya menjalankan:
git update-index --assume-unchanged Gemfile.lock
dan untuk membalikkan:
git update-index --no-assume-unchanged Gemfile.lock
Ini juga berguna untuk memasukkan sesuatu seperti kode berikut di blog Anda Gemfile
. Ini memuat permata adaptor basis data yang sesuai, berdasarkan database.yml Anda.
# 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]
# -----------------------------------------------------------------------------
Saya tidak bisa mengatakan apakah ini merupakan praktik terbaik yang mapan atau tidak, tetapi ini berhasil bagi saya.