“bundle exec rake”和“bundle execrackup”有什么区别?rackup 的执行流程从哪里开始?

问题描述 投票:0回答:2

我理解“bundle exec”正在指示捆绑器在给定目录和 gemfile 的上下文中执行某些操作。

但是

bundle exec rake
bundle exec rackup
有什么区别?

另外,在

bundle exec rackup
的情况下,执行流程的开始是什么?

ruby bundler
2个回答
1
投票

它们是不同的工具。

  • rake
    运行使用特殊 DSL 定义的任务脚本。
  • rackup
    rack
    的一部分,这是一个最小的网络服务器界面。

rackup 是运行 Rack 应用程序的有用工具,它使用 Rack::Builder DSL 来轻松配置中间件和构建应用程序。 rackup 自动找出它运行的环境,并以 FastCGI、CGI 或 WEBrick 的形式运行您的应用程序 — 所有这些都来自相同的配置。

要运行 Rack 应用程序,您可以将路径作为参数传递给它:

bundle exec rackup yourapp.ru
或者使用应用程序初始化创建
config.ru
文件,然后运行
bundle exec rackup

这是最小的 Rack 应用程序:

run ->(env) { [200, {'Content-Type' => 'text/html'}, ['Hi Mugen']] }

UPD

正如 @tadman 在下面的评论中提到的那样

bundle exec
只是加载
Gemfile
中的内容并准备环境。此外,根据您的设置,您可以运行
rake
rackup
,而无需使用
bundle exec
命令。


0
投票

我在这里看到四个重叠的问题:

  • 什么是
    bundle exec <whatever>
    • ...它相当于:
      • /usr/bin/<whatever>
        ...或者...
      • /usr/bin/env <whatever>
    • exec
      是bundle的关键字,可以被它理解
    • 后面的
      <whatever>
      只是一个名字
    • bundle exec
    • 准备一些东西,然后尝试运行
      bundle exec
      
      
  • <whatever>
    rake
    有什么共同点?
    
    
    它们是两个不相关的工具,恰好是用 Ruby 编程的
    • 它们都可以安装在标准 Ruby 生态系统中...
    • ...因此可以通过
    • rackup
    •  启动
      
  • bundle exec ...有什么作用?
    
    
    它是一个类似
      rake
    • 的工具
      
      它可以制作成例如启动 C 编译器来编译一些代码
    • ...就像
    • make
    • 它从用 rake 特定语言编写的文件中获取指令
      
      
  • make有什么作用?
    
    
    它启动具有特定配置的(预安装的)网络服务器
    • ...这将导致在每个 HTTP 请求上调用简单的 Ruby 方法
      它依赖于...
    • 已安装的网络服务器(支持的服务器池中的一个)来处理 HTTP
      • rackup
      • , 转动
        将请求解释为简单的方法调用......并且......
        • 将值返回为网络服务器可以理解的正确响应
      如果不带参数调用
    • 它将使用当前工作目录中的文件
        rack
      • ...并使用包含的 
      • config.ru
      • 兼容的 Ruby 代码来服务请求
        
        
© www.soinside.com 2019 - 2024. All rights reserved.