【问题标题】:What are Capistrano binstubs?Capistrano binstub 是什么?
【发布时间】:2016-03-04 20:59:51
【问题描述】:

我是 Rails 新手,希望使用 Capistrano 将我的应用程序部署到 Ubuntu 14。有人可以向我解释什么是 binstubs 以及部署我的 rails 应用程序是否需要它们?

【问题讨论】:

    标签: ruby-on-rails-4 capistrano capistrano3


    【解决方案1】:

    binstub 是一个可执行脚本,它包装 Ruby 命令以确保使用该命令的特定版本。

    binstubs 有时是必要的原因是因为给定的命名 Ruby 命令可以引用许多不同的东西,因此您不能 100% 确定名称所指的内容。在部署中,可预测性非常重要:您希望 100% 确定自己正在运行什么代码,尤其是在生产环境中。

    例如,考虑名为rails 的命令。您可能安装了多个版本的 Rails。事实上,每次您升级到最新的补丁版本以进行安全修复时,这就是您正在安装的另一个新版本。最重要的是,您可能还安装了多个版本的 Ruby。

    那么当您运行命令rails 时,使用的是哪个版本的Ruby?哪个版本的 Rails?

    binstub 使这个决定变得明确。这个想法是您创建一个特殊的脚本并将其放在项目的bin 目录中,例如bin/rails。该脚本使用 Bundler 来保证使用正确版本的 Rails。当你运行bin/rails 时,你会得到保证。 (当您生成一个新的 Rails 项目时,Rails 实际上会为您创建这个和其他 binstub。)

    无论如何,只要您使用bundle exec rails,从技术上讲,您就不需要这些 binstub。 bundle exec 包装器本质上与 binstub 所做的事情相同。

    如果您将 capistrano/rails gem 与 capistrano/bundler gem 结合使用(确保两者都在您的 Capfile 中),那么 Capistrano 将始终使用 bundle exec,您不必担心创建自己的 binstub .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      相关资源
      最近更新 更多