0

開発者ごとにGemfileをカスタマイズする方法を見ましたか?、しかしそれは私が望むことを本当にしませんでした、そしてそれは古いです。

ユースケース:Postgresを使用したいのですが、他の開発者はSQLiteを使用しています。

1つの解決策は、Gemfileを変更してコミットしないことですが、誰かが変更を加えると同期がとれなくなります。そして、とにかくしばらくすると誤ってコミットされてしまいます。

他の開発者の環境やGemfile内の他のgemに影響を与えることなく、SQLitegemを削除してPostgresgemを自分の環境に追加するクリーンな方法はありますか?

FWIW、これらの変更は開発環境とテスト環境にのみ影響します。ステージングやプロダクションではありません。

または、Gemfileを変更する必要はまったくないかもしれません。両方のgemをインストールしてdbconfigファイルをオンにすることは可能ですか?もしそうなら、開発者ごとのデータベース構成を設定する方法は?

編集:Gemfileを変更する必要はありません。pg gemをインストールし、database.yml構成ファイルを変更するだけです。

4

3 に答える 3

3

あなたの場合の正しいアプローチは、任意の開発者が使用するすべての gem を gemfile に含め、database.yml開発者ごとに個別のファイルを作成することです。database.yml をソース管理されていないままにし、開発者が必要に応じて環境にコピーして変更できるように、サンプルの構成ファイル (database.yml.sample) を提供することができます。

他の人が指摘しているように、開発者間で異なるデータベースを使用することは、これらの違いが元の環境で意図しない結果をもたらす可能性があるため、あまり良い方法ではありません。複数のデータベースをサポートする必要がある場合、これは悪い考えではないかもしれませんが、そのような場合、すべての開発者が全面的なテストを実行できるように、すべてのターゲット データベース システムにアクセスできる必要があります。

于 2012-11-08T15:02:45.340 に答える
2

他の開発者とは異なるデータベースを実行すること、特に本番システムと比較することは、本当に良い考えではありません。開発環境は、展開ターゲットで採用されているソフトウェアを可能な限り忠実に反映するという考え方です。

製品が多数の異なるデータベースにデプロイされているために、複数のデータベースのサポートが必要になる場合があります。ここではそうではないように聞こえます。

Postgres を使用している場合、新しいコードが SQLite でまったく機能するとは限りません。

于 2012-11-08T15:04:30.123 に答える
1

うーん、開発は本番環境を可能な限り模倣する必要があるため、そうするのはあまりお勧めできません.2つのdbエンジンで開発するのは難しいです. とにかく、唯一の制約は database.yml ファイルと db アダプターです。PinnyM が既に述べたように、database.yml ファイルを他の開発者と共有するべきではありませんが、使用している db アダプター gem を Gemfile から削除する必要もあります。

これを Gemfile に追加します。

group(:production) do
  gem "sqlite" 
end

また、実稼働環境でのみ構成されたアダプターがあります。そのための database.yml も必要になることを忘れないでください。それがそうするのが難しい理由です。または、db 設定を手動で設定するだけです (database.yml はこのステップで解析されるだけですが、プレーンな Ruby では実行できないという意味ではありません)。

于 2012-11-08T15:12:26.780 に答える