【问题标题】:The current state of Rails deploymentRails 部署的当前状态
【发布时间】:2011-08-12 04:12:24
【问题描述】:

几年前,部署 Rails 应用程序似乎相当棘手。然而,从我最近阅读的内容来看,rails 在这方面似乎有了很大的改进。但是,鉴于 Ruby 和 gem 的各种版本依赖问题,部署仍然是一个令人头疼的问题(例如,对于 heroku 或 engine yard)?

【问题讨论】:

  • 几年前部署一切都很好,上次没有太大变化。如果您的要求满足 capistrano 或其他工具可以管理的要求,这是非常典型的任务。 Capistrano 是由 37 个信号修补的广泛有用的解决方案

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

没有。 Heroku 使部署变得非常简单:它完全由 Git 管理,您的应用程序是隔离的,因此没有依赖冲突,并且对于小型应用程序是免费的。 EngineYard 和 DotCloud 等其他服务提供类似的服务(尽管 EY 并不便宜,DotCloud 也不像 ruby​​ 那样专注)。

【讨论】:

    【解决方案2】:

    有很多工具可以让您更轻松地进行部署和管理。

    Heroku
    Heroku 完全由 git 通过 heroku gem 管理。从本质上讲,您调用 heroku push 而不是 git push,您的更改会被推送到服务器、构建,并且您的网站会自动更新

    捆绑器
    Bundler 让管理 gem 变得更加容易,而且超级简单。

    RVM
    RVM 实际上是在服务器上使用的好工具。它允许您让一台服务器为多个 Rails 应用程序提供服务,每个应用程序都在不同版本的 Ruby 上,具有自己的完全独特的 Gemset(这意味着使用相同 ruby​​ 版本的多个应用程序不会发生 gem 冲突。Gem 冲突是 走了!)。

    Capistrano
    Capistrano 可让您定义部署期间需要发生的所有事情,并允许您通过一个简单的命令来开始和结束这一切 - cap deploy。它极大地简化了部署过程。

    工头
    如果您的应用程序需要启动多个服务(服务器、Delayed::Job、Sphinx 等),Foreman 是适合您的工具。它允许您定义您需要的服务,并通过调用foreman start 一次性启动它们。它与 Capistrano 配合得很好,使您的服务的控制台输出美观且易于阅读。


    总的来说,我认为 Rails 部署的状态比几年前好一个数量级,但总有改进的余地。上述项目是一个良好的开端,只需找到最适合您组织的项目即可。

    【讨论】:

    • 值得指出的是,Heroku gem 仅适用于 Heroku 的托管服务,而列出的其他工具独立于托管服务提供商。
    • 这并不完全准确。您可以使用 git push heroku master 或类似的方式推送到 Heroku,尽管许多其他命令的格式为 heroku <task>
    【解决方案3】:

    根据您的需求,部署可能会让人头疼。如果您在服务器中运行单个应用程序,则可以轻松构建、安装 ruby​​ 并使用 Capistrano (here's a sample of how to do it using Nginx and Unicorn) 设置部署环境。

    另一方面,如果您的服务器上需要许多不同的应用程序(可能在不同的 rubies 和 gems 组上运行),您将需要做更多的工作,但这是完全可能的。要同时安装许多不同的 rubies 而不会相互冲突,您将使用 RVM 并确保定义了所有应用程序依赖项,您的 Rails 应用程序必须使用 Bundler (或者其他可以一样)。

    因此,无论您的要求是否会使其变得更简单,但这并不是真的不可能,而且它不会让任何人对可用于这项工作的工具的数量和质量感到疯狂。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多