Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 3 github上应用程序的多个实例_Ruby On Rails 3_Git_Github - Fatal编程技术网

Ruby on rails 3 github上应用程序的多个实例

Ruby on rails 3 github上应用程序的多个实例,ruby-on-rails-3,git,github,Ruby On Rails 3,Git,Github,我有一个Rails应用程序,我将开始在不同的服务器上安装它。代码库中的每台服务器都会略有不同(徽标更改、小功能更改等)。我正在处理一个github回购协议,我想知道最好的管理方法是什么 我最初的想法是为每个应用程序实例创建一个github帐户,这样我就可以在应用程序外维护不同的实例。例如,有一个用于server1/instance1的github帐户和另一个用于server2/instance2的github帐户 我的另一个想法是克隆当前的代码库,将其推送到一个新的github帐户,并重命名它,

我有一个Rails应用程序,我将开始在不同的服务器上安装它。代码库中的每台服务器都会略有不同(徽标更改、小功能更改等)。我正在处理一个github回购协议,我想知道最好的管理方法是什么

我最初的想法是为每个应用程序实例创建一个github帐户,这样我就可以在应用程序外维护不同的实例。例如,有一个用于server1/instance1的github帐户和另一个用于server2/instance2的github帐户

我的另一个想法是克隆当前的代码库,将其推送到一个新的github帐户,并重命名它,然后添加正确的git远程凭据和ssh密钥以正确地推/拉

基本上,我试图在多台服务器上维护同一个应用程序,但对每个应用程序实例进行小的更改(同样,徽标、小的功能更改等)

管理这样的事情最好的方法是什么


如果我的问题不清楚,请告诉我,我很乐意解释。

假设您的两台服务器分别用于“instance1”和“instance2”

这可能是一个架构问题,而不是Git问题。是否有可能对每个实例使用完全相同的代码基,并抽象出差异?如果您拥有(比如)所有实例的共享CSS文件,然后根据您的应用程序是instance1还是instance2加载
instance1.CSS
instance2.CSS
,则很容易维护。对于徽标也一样,只需加载
/path/to/logo1
/path/to/logo2
,具体取决于配置文件是在instance1上还是在instance2上。一开始需要做很多工作,但从长远来看,需要维护的工作量要小得多

我不完全确定在您的架构中是否可以实现这一点,但如果可以实现,那么如果应用程序实例之间100%的差异都保存在一个设置文件中,那么就很容易用Git进行补充。您可以使用Git分支机构,而不是单独的回购或单独的账户:

  • master
    分支将包含共享代码的最新版本
  • instance1
    instance2
    分支之间的区别仅在于配置文件显示“这是instance1”或“这是instance2”
然后,您还可以通过将
master
合并到
instance1
中,将instance1更新为最新的共享代码,而无需在准备好之前更新instance2


对于分支有一个很好的解释,我认为您只需创建单独的分支并在需要时进行合并,就可以实现您的目标。如果只是配置文件不同,合并就会容易得多。

很抱歉花了这么长时间来评论。所以,我不能保留一个主分支,将所有不同的配置(如徽标路径、Twilio API密钥等)设置为application.yml文件中的ENV变量,并为每个实例创建一个不同的配置吗?是否将其添加到.gitignore,并手动将其放置在app/shared/config目录中?如果我分支并最终拥有100个不同的实例,这可能是一个维护的难题。或者我没有正确理解你的答案?我不想把重要组件留在源代码管理之外,如果你不小心
rm
it会发生什么?我不认为同步100个独立的存储库会比合并分支更容易。。。嗯。合并很快,你不会做那么多,如果变得单调,甚至可以编写一个小的shell脚本来完成。哦,这里有人已经经历了这个过程:。我认为关键在于从一开始就尽可能地保持代码的通用性。