ปัญหาที่แท้จริงเกิดขึ้นเมื่อคุณทำงานกับแอพ open-source Rails ซึ่งจำเป็นต้องมีอะแดปเตอร์ฐานข้อมูลที่กำหนดค่าได้ ฉันกำลังพัฒนา Fat Free CRM สาขา Rails 3 การตั้งค่าของฉันคือ postgres แต่เราต้องการให้ฐานข้อมูลเริ่มต้นเป็น mysql2
ในกรณีนี้Gemfile.lock
ยังคงต้องมีการตรวจสอบด้วยชุดอัญมณีเริ่มต้น แต่ฉันต้องละเว้นการเปลี่ยนแปลงที่ทำไว้กับเครื่องของฉัน เพื่อให้บรรลุนี้ฉันทำงาน:
git update-index --assume-unchanged Gemfile.lock
และย้อนกลับ:
git update-index --no-assume-unchanged Gemfile.lock
Gemfile
นอกจากนี้ยังเป็นประโยชน์ที่จะรวมถึงสิ่งที่ต้องการต่อไปนี้ในรหัสของคุณ สิ่งนี้จะทำการโหลดอะแดปเตอร์ฐานข้อมูลที่เหมาะสมโดยยึดตาม database.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]
# -----------------------------------------------------------------------------
ฉันไม่สามารถพูดได้ว่านี่เป็นการฝึกฝนที่ดีที่สุดหรือไม่ แต่มันก็ใช้ได้ดีสำหรับฉัน