2012-02-19 57 views
4

我是使用RoR-CoffeeScript-Sass-Passenger-Apache的开发人员。我们使用EC2进行部署,并且我们使用Macbook Airs进行开发。尽管rails社区对Mac非常友好,但由于dev和prod之间的整个部署堆栈不同,我使用的是virtualbox + ubuntu,而我的同行正在使用OS X native进行开发。Ruby开发环境(OS X与Ubuntu)

有在OS X原生正如我们在栈有更多的依赖性(Solr的,魔豆,MongoDB的多,其在Ubuntu效果很好)

我在寻找的建议如何使用Rails的Mac开发增加了更多的问题Amazon EC2可以设置其开发和生产环境。

还想反馈使用vagrant分发开发环境的用例。

回答

2

我们的团队一直在Mac上开发并在EC2上部署到Ubuntu上三年,现在只有很少的问题。有几件事使这个过程顺利进行:

  1. 我们可以在Mac上运行整个应用程序堆栈**。在需要的时候,在macports,homebrew和源码建设之间,我们设法获得了我们在开发工具上运行的每一项技术。碎片配置和配合的方式在本地是不同的(例如,我们会自动发现memcached实例,而本地则是硬编码),但每次集成都可以先在Mac上进行测试,然后再进行制作。

  2. 我们的连续构建系统与我们的prod盒具有相同的设置。这意味着如果你检查一些代码取决于一些本地魔法,它会很快被发现。

  3. 我们运行浸泡(一些人称之为分段或整合)堆栈,其配置与生产相同。这有时会导致一些开发费用,但有很多好处,它非常值得。所有代码在推送到产品之前都会经过这个堆栈。

该设置已经运行良好,随着时间的推移,我们已经允许设置的更多部分漂移。我们过去常常在当地运营旅客(就像我们在做产品时那样),但现在使用Pow。在升级剩下的堆栈之前,我们经常在开发中尝试使用新的ruby版本一段时间。

我不得不为其他项目(VirtualBox中的OSX + CentOS)使用虚拟化环境而开发,并且肯定会发现它更加痛苦的是所有原生的。首先,它感觉像管理两台机器而不是一台。一切也都觉得sloooooowww。

如果有一块堆栈在Mac上运行很痛苦,我肯定会选择a)花点时间在本地工作,或者b)将该块摘除掉,而不是支付处理虚拟环境的税。

**我只在本讨论中包含Rails应用程序和直接依赖项。例如,我们使用puppet配置我们的EC2车队,但不要在我们的开发箱上运行它。

3

通常的做法是将您的堆栈复制为“暂存”环境。使用EC2,您可以创建现有机器的AMI并复制它们,只将它们打开以测试部署,然后运行测试以确保在将其部署到生产之前,所有部件都正常运行。或者,您可能希望永久保留它,以便开发人员可以快速部署更新或修补程序以根据需要进行测试。

这样做可以确保您在生产之前有一个完整的生产系统副本进行测试,从而消除有关部署潜入生产的任何(灾难性)问题。

+0

谢谢凯文。这确实回答了我的问题的一部分。通过你的回答,我假设你建议我使用OS X作为默认开发环境,并推动为测试部署“制作”副本。另外,当你有一个依赖堆栈时,你如何设置你的本地环境? – Alagu 2012-02-19 14:16:19

+0

要添加,我正在寻找当依赖堆栈变大时使用Native OS X和Virtualbox的优点和缺点的答案。 – Alagu 2012-02-19 14:19:37

+0

在开发机器上,它应该像在OSX上根据需要设置堆栈一样简单。您可以创建一个脚本,为新开发人员做所有事情,使其不那么痛苦。希望每个开发人员都能够在Virtual box中运行,看起来非常适得其反。如果你不是一个分布式的劳动力队伍,一个简单的答案就是为nix购买或重新使用计算机,并允许每个开发者自己的端口运行他们的代码并进行测试。 – 2012-02-20 14:09:59