Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在开发环境中通过Octopus gem进行Rails Postgresql复制_Ruby On Rails_Ruby_Postgresql_Replication_Octopus - Fatal编程技术网

Ruby on rails 在开发环境中通过Octopus gem进行Rails Postgresql复制

Ruby on rails 在开发环境中通过Octopus gem进行Rails Postgresql复制,ruby-on-rails,ruby,postgresql,replication,octopus,Ruby On Rails,Ruby,Postgresql,Replication,Octopus,显然,当使用八达通gem进行Postgres复制时,一切都应该是即插即用的。然而,我似乎找不到我做错了什么 这是我的config/shards.yml 八达通: 环境: -发展 真的吗 发展: 奴隶1: 适配器:postgresql 主机:本地主机 数据库:slaveapp_开发 用户名:pguser 密码:pgpass AR型号提供程序(我通过Rake任务在每个应用程序中创建完全相同的表)我想同步/复制到我的从属程序: 类提供程序提供程序。使用(:slave1)。创建({Provider\u

显然,当使用八达通gem进行Postgres复制时,一切都应该是即插即用的。然而,我似乎找不到我做错了什么

这是我的
config/shards.yml

八达通:
环境:
-发展
真的吗
发展:
奴隶1:
适配器:postgresql
主机:本地主机
数据库:slaveapp_开发
用户名:pguser
密码:pgpass
AR型号
提供程序
(我通过Rake任务在每个应用程序中创建完全相同的表)我想同步/复制到我的从属程序:

类提供程序 我通过Rails服务器启动这两个应用程序,然后进入Masterapp的控制台,从那里:

>提供程序。使用(:slave1)。创建({Provider\u params…})
#=>有效!我在slave1的数据库中获得了一个新记录。
>Provider.using(:master.create({Provider\u params…})
#=>部分有效。仅在主数据库中创建记录。
问题是,当调用
提供程序。使用(:master).
时,我希望:

1-在主数据库中创建记录


2-在slave1的数据库中复制相同的记录 尝试在配置中的
复制:true
之后添加
完全复制:false

这不是八达通gem的目的

它根据是读操作还是写操作重定向数据库请求。这样,您就可以使用Rails模型,而不必考虑当前的数据库连接以及它是否适合预期的操作

它不会将数据复制到从属设备

要执行实际复制,即从主设备到从设备的数据传输,您必须自己进行设置

PostgreSQL有几个选项。如果您使用的是较新版本(9.1+),则可以使用集成的。有关于如何设置它的教程,例如


如果您使用的是较旧版本的PostgreSQL,请查看。

@vint-i-vuit您的
提供程序
模型是否在回调中创建任何相关模型?如果是,请检查它们是否都包含
replicated\u model()
call。感谢您的输入。它不显式地处理回调中的任何模型。它确实有一些“has_many”的关系,但我只是在以防万一的情况下评论了一下:(哦!这解释了很多,而且更有意义):/谢谢你。我在这方面不是很有经验,你有没有更好的解决方案来实现特定表(不是整个数据库)的主多段复制?我在考虑。我也没有这方面的经验,但Slony-I似乎是一个安全的选择,因为它正在积极维护和广泛使用。