Vấn đề thực sự xảy ra khi bạn đang làm việc trên ứng dụng Rails nguồn mở cần phải có bộ điều hợp cơ sở dữ liệu có thể định cấu hình. Tôi đang phát triển nhánh Rails 3 của Fat Free CRM. Sở thích của tôi là postgres, nhưng chúng tôi muốn cơ sở dữ liệu mặc định là mysql2.
Trong trường hợp này, Gemfile.lock
vẫn cần phải kiểm tra với bộ đá quý mặc định, nhưng tôi cần bỏ qua những thay đổi mà tôi đã thực hiện với nó trên máy của mình. Để thực hiện điều này, tôi chạy:
git update-index --assume-unchanged Gemfile.lock
và để đảo ngược:
git update-index --no-assume-unchanged Gemfile.lock
Nó cũng hữu ích để bao gồm một cái gì đó như mã sau đây trong của bạn Gemfile
. Điều này tải gem bộ điều hợp cơ sở dữ liệu thích hợp, dựa trên cơ sở dữ liệu của bạn.
# 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]
# -----------------------------------------------------------------------------
Tôi không thể nói nếu đây là một thực tiễn tốt nhất được thiết lập hay không, nhưng nó hoạt động tốt với tôi.