几年前,部署rails应用程序似乎相当棘手。然而,根据我最近阅读的内容,似乎轨道在这方面有了很大改进。但是,鉴于各种版本的Ruby和gem依赖问题,部署仍然令人头痛(例如,对于heroku或引擎码)?
答案 0 :(得分:4)
没有。 Heroku使部署非常容易:它完全由Git管理,您的应用程序是隔离的,因此没有依赖冲突,并且它对于小规模应用程序是免费的。其他服务,如EngineYard和DotCloud提供类似的服务(虽然EY不便宜,但DotCloud并不像红宝石那样)。
答案 1 :(得分:3)
有许多工具可以让您更轻松地进行部署和管理。
<强>的Heroku 强>
Heroku完全由git通过heroku
gem管理。从本质上讲,您致电heroku push
而不是git push
,您的更改会被推送到服务器,构建,并且您的网站会自动更新
<强>捆扎机强>
Bundler使管理宝石变得更加容易,而且非常简单。
<强> RVM 强>
RVM实际上是在服务器上使用的好工具。它允许你让一个服务器提供多个Rails应用程序,每个应用程序都在不同版本的Ruby上,它拥有自己完全独特的Gemset(这意味着你不会因使用相同的ruby版本而对多个应用程序产生gem冲突.Gem冲突是< EM>消失的!)。
<强> Capistrano的强>
Capistrano允许您定义在部署期间需要执行的所有操作,并允许您使用一个简单的命令cap deploy
来启动和结束所有操作。它极大地简化了部署过程。
<强>工头强>
如果您的应用程序需要启动多个服务(Server,Delayed :: Job,Sphinx等),Foreman就是您的工具。它允许您定义所需的服务,并通过调用foreman start
一次启动它们。它与Capistrano很好地配合使用,使您的服务控制台输出更好,更易于阅读。
总的来说,我认为Rails的部署状态比几年前好一个数量级,但总有改进的余地。上面提到的项目是一个良好的开端,而这只是找到最适合您组织的问题。
答案 2 :(得分:0)
根据您的需求,部署可能会让您头疼。如果您在服务器中运行单个应用程序,则可以使用Capistrano(here's a sample of how to do it using Nginx and Unicorn)轻松构建,安装ruby并设置部署环境。
另一方面,如果您的服务器上需要许多不同的应用程序(可能运行在不同的红宝石和宝石组上),那么您将拥有更多的工作,但这是完全可能的。要同时安装许多不同的rubies而不会相互冲突,您将使用RVM并确保定义所有应用程序依赖项,您的Rails应用程序必须使用Bundler(或者某些东西)否则也这样做。)
所以,你的要求会让它变得更简单,但这并不是真的不可能,也不会让任何人为这项工作的工具数量和质量而疯狂。