2010-10-14 25 views
9

Nhóm chúng tôi sử dụng cơ sở dữ liệu khác nhau dành cho nhau, và chúng tôi đang sử dụng bundler nên Gemfile của chúng tôi bao gồm kết nối db tác giả repo của (mysql)điều kiện trong Gemfile

Tôi đang sử dụng pg và do sự lười biếng bit và sợ phá vỡ một cái gì đó, tôi không muốn sử dụng mysql, vì vậy tôi chỉ cần thêm một đá quý "pg" trong Gemfile của chúng tôi. Tất nhiên, vì chúng tôi đang sử dụng git, nó sẽ luôn hiển thị dưới dạng tệp đã sửa đổi và tất cả chúng ta đều sử dụng Gemfile để chúng tôi không thể gitignore hoặc cam kết với những thay đổi của chúng tôi.

Câu hỏi là, làm cách nào để chúng tôi thực hiện việc này? Có một điều kiện trong bundler hoặc tôi chỉ cần phải tuyên bố rằng tôi đang sử dụng một số đá quý nào đó khác?

Trả lời

15

Kể từ Gemfile, như Rakefile, chỉ là một đoạn của Ruby, bạn có thể ném vào điều kiện nếu bạn nghĩ rằng nó sẽ đơn giản hóa cuộc sống của bạn. Ví dụ:

if (Gem.available?('pg')) 
    gem 'pg' 
else 
    gem 'mysql2' 
end 

Đôi khi bạn phải làm điều này cho các phiên bản Ruby khác nhau là 1,8 và 1,9 đôi khi cần đá quý khác nhau.

+0

Gem.available là gì? làm gì? nó có kiểm tra sự sẵn có của đá quý trong nguồn đá quý của bạn hoặc trong localhost của bạn không? – corroded

+0

Nó chỉ đơn giản là kiểm tra nếu nó đã được cài đặt, không nếu nó được cài đặt. Vì bạn có thể tạo các tệp .gem của riêng mình, về mặt kỹ thuật, bạn có thể cài đặt một viên ngọc không có sẵn ở bất kỳ đâu. – tadman

+0

tôi thấy tôi thấy. cảm ơn! – corroded