Ruby on rails RubyonRails:开发vs生产数据库-在哪里输入数据?

Ruby on rails RubyonRails:开发vs生产数据库-在哪里输入数据?,ruby-on-rails,postgresql,heroku,development-environment,production-environment,Ruby On Rails,Postgresql,Heroku,Development Environment,Production Environment,我对Rails很陌生 我对开发和生产数据库感到困惑。我在我的所有环境中使用postgreSQL,并使用heroku托管该站点。我能够将迁移和种子推送到heroku上的生产数据库中。然而,我通过localhost:3000上的浏览器输入了相当多的新数据。我花了很长时间试图弄清楚如何将数据发送给heroku,但最终还是成功地销毁了数据,然后创建了一个新的空数据库,并将我的开发数据库推到了该数据库中。现在我在heroku上的站点与localhost相同:3000使用rails服务器。我修改了datab

我对Rails很陌生


我对开发和生产数据库感到困惑。我在我的所有环境中使用postgreSQL,并使用heroku托管该站点。我能够将迁移和种子推送到heroku上的生产数据库中。然而,我通过localhost:3000上的浏览器输入了相当多的新数据。我花了很长时间试图弄清楚如何将数据发送给heroku,但最终还是成功地销毁了数据,然后创建了一个新的空数据库,并将我的开发数据库推到了该数据库中。现在我在heroku上的站点与localhost相同:3000使用rails服务器。我修改了database.yaml文件,使开发数据库和生产数据库现在具有相同的名称(开发数据库的名称)。但我不认为这意味着如果我通过localhost:3000对开发数据库进行更改,它们将在heroku站点上自动更改。我对heroku上的颜色(深红、栗色)非常困惑-这些数据库是否与我在yaml中指定的不同?我不知道现在是应该在localhost:3000站点还是heroku站点上输入新数据。抱歉,如果这是非常业余的。谢谢。

您对Rails如何使用数据库感到困惑

让我解释一下:


Rails使用编程模式用数据库数据填充应用程序。Rails使用这种模式是因为它是最高效和可扩展的,它通过从用户处获取命令(单击链接、输入数据)、发送到控制器并对模型执行请求来工作

所有rails应用程序的工作方式是接受命令(由您定义),并使用它们执行数据库操作&然后用新数据重新填充应用程序

Rails设计用于处理单个数据库,其中的
database.yml
文件用于指定所使用的数据库(最好为开发、暂存和生产使用不同的数据库,以提高性能、效率和其他问题)

这意味着数据库名称并不重要-重要的是使用系统为所有数据库提供所需的列以使应用程序正常工作,从而使两个数据库保持最新


在回答您的问题时,您拥有的数据对于开发和生产将是不同的。您的生产环境应该是一个“神圣的”环境,在这里,所有内容都可以高效地编译和运行

生产环境用于处理自己的数据,应该通过应用程序填充。开发和生产数据库的原因是确保在尝试将其应用于生产数据库之前,可以在开发环境中“出错”


如果您告诉我们有关您的具体问题的更多信息,我们将能够给出更精确的答案

如果您想要同步,请使用heroku pg:pull将heroku数据放入您的计算机,使用heroku pg:push将数据从您的本地主机发送到heroku。请小心,请在没有生产数据的情况下进行测试。听起来,当我输入新数据(不是通过迁移输入新的表属性)时,我应该通过heroku上的生产数据库而不是localhost:3000上的开发数据库来完成。但是,当我对站点设计进行更改时,我会在localhost:3000上评估这些更改。因此数据不同步。我认为,通过将我的生产数据库和开发数据库命名为相同的名称(在database.yml文件中),这将使其同步。我不知道为什么不是这样。如果你想使用完全相同的数据,当然你可以使用相同的数据库进行生产和开发——这是最简单的方法