Windows 7上Rails 3.1中本地使用的应用程序的最佳部署策略?

我正在开发Rails 3.1中的2个应用程序(很快就会升级),并注意到我目前的策略有其缺点。 我目前正在做的是:

  • 直接在开发目录上工作,使用Git进行版本控制(这对我来说非常适合)。
  • 我已经定义了数据库(省略了没有趣的部分):

    development: database: db/dev.db production: database: db/dev.db 
  • 我有两个应用程序一直在生产模式下运行,其中端口定义为3008和3009。

  • 有时,我想改变一些小东西,然后直接使用默认值启动两个应用程序之一的开发服务器: rails s thin (port == 3000)。

我注意到以下事情不能很好地发挥作用。

  • 当我更改CSS或Javascript文件时,我经常要清理(以及在开发重建之后)资产。
  • 有时,开发服务器从一个服务器获取文件(CSS和Javascript),并将它们用于另一个服务器。 我必须手动清理浏览器的缓存以避免这种情况。

在我的计算机上本地并行开发和使用这两个应用程序的更好策略是什么? 欢迎任何提示和提示。 我应该使用部署工具(Capistrano)吗? 我应该为这个鸿沟推出自己的Rake任务吗? 或者我是否会错过一些可以治愈伤口的神奇开关(听起来很可怜​​:-))?

最后,它是各种变化,所以我回答我自己的问题,并希望其他人可以从中学到一些东西。 最后,有两个主要决定(以及一些次要决定):

  • 使用不同的存储库进行开发和生产,即使在同一台机器上也是如此。 添加另一个(裸一个)来同步这两个。 仅从开发推动,仅从生产中拉动。
  • 始终为不同的应用程序使用不同的端口。 制定一个类似的计划:
    • appA:dev ==> 4001,prod ==> 3001
    • appB:dev ==> 4002,prod ==> 3002

以下是我所做的更改。 rails/root是我的应用程序的根目录,整个目录结构如下:

 rails/ root/ another/ ... bare/ root.git/ another.git/ ... production/ root/ another/ ... 
  • 从旧的存储库创建2个新存储库,一个作为存储库,另一个仅用于生产:
    1. mkdir rails/production
    2. mkdir rails/bare
    3. cd rails/bare
    4. git clone ../root --bare
    5. cd ../root
    6. git remote add bare ../bare/root
    7. cd rails/production
    8. git clone ../bare/root
    9. cd root
    10. git remote add bare ../../bare/root
  • 不要使用一个(相同的)数据库进行开发和生产,只是为了确保Git可以发挥其魔力。
  • 开发(仅)开发存储库。
  • 经过充分测试后,请执行以下两个步骤:
    1. root> git push bare
    2. root/../production/root> git pull bare
  • 使用以下命令启动开发服务器(仅限): root> rails s thin -p 4009
  • 和生产服务器(仅): root/../production/root> rails s thin -e production -p 3009

因此,我还有一些工作要做,从开发阶段到生产阶段,但我会消除那些一直存在的小烦恼。

在开发机器上运行生产服务器,或在生产机器上进行开发是一种不寻常的,甚至是不鼓励的设置。 使用本地计算机开发,在开发模式下运行服务器并运行测试套件。 提交对git的更改。 然后,从时间到时间,部署到以生产模式运行的服务器。 这是推荐的设置。 作为生产服务器,您可以设置自己的服务器(例如您自己的机器或云端的机器,如EC2)并使用Capistrano进行部署。 但是,更简单,更麻烦的是,您可以部署到像Heroku这样的服务。 您需要做的就是git push ,应用程序将部署。 Heroku上的单个并发实例是免费的。

此外,Windows不是一个非常受支持的运行Rails服务器的环境,你最好使用Linux。 对于开发,Windows可能会做到这一点,但你绝对会成为少数。 大多数人都在Mac或Linux上。 有时人们建议在用于Rails开发的虚拟机中在Windows之上安装Ubuntu Linux。