0

看到如何为每个开发人员定制 Gemfile?,但它并没有真正做到我想要的,而且它很旧。

用例:我想使用 Postgres,而其他开发人员正在使用 SQLite。

一种解决方案是修改我的 Gemfile 并且不提交它,但是如果有人对其进行任何更改,它将不同步。无论如何,它会在一段时间后意外提交。

有没有一种干净的方法可以删除 SQLite gem 并在我的环境中添加 Postgres gem,而不影响其他开发人员的环境和 Gemfile 中的其他 gem?

FWIW,这些更改仅影响开发和测试环境。不是分期或生产。

或者,也许根本不需要更改 Gemfile。是否可以同时安装 gem 并打开 db 配置文件?如果是这样,如何设置每个开发人员的数据库配置?

编辑:不需要更改 Gemfile。只需安装 pg gem 并更改 database.yml 配置文件。

4

3 回答 3

3

对于您的情况,正确的方法是在 gemfile 中包含任何开发人员使用的所有 gem,并为database.yml每个开发人员提供一个单独的文件。您可以简单地将 database.yml 保留为非源代码控制,并提供示例配置文件 (database.yml.sample) 供开发人员根据需要复制和修改到他们的环境中。

正如其他人指出的那样,在开发人员之间使用不同的数据库并不是很好的做法,因为这些差异可能会在非原始环境中产生意想不到的后果。在需要支持多个数据库的情况下,这可能不是一个坏主意,但在这种情况下,每个开发人员都应该可以访问所有目标数据库系统,以便每个人都可以进行全面的测试。

于 2012-11-08T15:02:45.340 回答
2

运行与其他开发人员不同的数据库确实不是一个好主意,尤其是与生产系统相比。这个想法是您的开发环境尽可能地反映部署目标上使用的软件。

有时需要支持多个数据库,因为您的产品部署在许多不同的数据库上。这听起来不像这里的情况。

如果您使用 Postgres,则无法保证您的新代码完全可以与 SQLite 一起使用。

于 2012-11-08T15:04:30.123 回答
1

嗯,不建议这样做,因为开发必须尽可能地模仿生产环境,所以在两个数据库引擎中开发......很棘手。无论如何,您唯一的限制是 database.yml 文件和 db 适配器。正如 PinnyM 所说,您不应该与其他开发人员共享您的 database.yml 文件,但您还应该从 Gemfile 中删除您正在使用的数据库适配器 gem。

将此添加到您的 Gemfile 中:

group(:production) do
  gem "sqlite" 
end

您将拥有一个仅在生产中配置的适配器。不要忘记你还需要一个 database.yml 。这就是为什么这样做很棘手。或者只是手动设置数据库设置(database.yml 只是在这一步被解析,但这并不意味着你不能用普通的 ruby​​ 来做)。

于 2012-11-08T15:12:26.780 回答