2010-10-14 12 views
9

Nasz zespół korzysta z różnych baz danych dla siebie, i używamy Bundler więc nasz Gemfile zawiera repo twórcy złącze db (MySQL)warunkowe w Gemfile

Używam PG i ze względu na lenistwo bitowej i strachu złamania coś, nie chcę używać mysql, więc dodaję klejnot "pg" w naszym Gemfile.

Oczywiście, ponieważ używamy gita, będzie on zawsze wyświetlany jako zmodyfikowany plik, a wszyscy używamy Gemfile, więc nie możemy go zignorować ani zatwierdzić z naszymi zmianami.

Pytanie brzmi, jak sobie z tym poradzić? Czy istnieje warunkowe wiązanie lub czy muszę po prostu zadeklarować, że używam jakiegoś klejnotu w innym miejscu?

Odpowiedz

15

Od Gemfile, jak Rakefile, to tylko fragment Ruby, można dorzucić warunkowych, jeśli uważasz, że będzie to uprościć swoje życie. Na przykład:

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

Czasami trzeba to zrobić dla różnych wersji Rubiego jako 1.8 i 1.9 czasem potrzeba różnych klejnotów.

+0

co robi Gem.available? zrobić? czy sprawdza dostępność klejnotów w twoim źródle klejnotu lub w twoim lokalnym hostelu? – corroded

+0

Po prostu sprawdza, czy zostało już zainstalowane, a nie czy można je zainstalować. Ponieważ możesz tworzyć własne pliki .gem, technicznie możliwe jest zainstalowanie klejnotu, który nie jest nigdzie dostępny. – tadman

+0

Widzę, że widzę. dzięki! – corroded