【问题标题】:What is the difference between "bundle exec rake" and "bundle exec rackup" and where does the flow of execution start for rackup?“bundle exec rake”和“bundle exec rackup”有什么区别?rackup的执行流程从哪里开始?
【发布时间】:2021-08-18 12:12:41
【问题描述】:

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

但是bundle exec rakebundle exec rackup 有什么区别呢?

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

【问题讨论】:

    标签: ruby bundler


    【解决方案1】:

    它们是不同的工具。

    • rake 运行使用特殊 DSL 定义的任务脚本。
    • rackuprack 的一部分,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 中的内容并准备好环境。此外,根据您的设置,您可以在不使用 bundle exec 命令的情况下运行 rakerackup

    【讨论】:

    • 值得解释一下bundle exec 只是加载Gemfile 中的内容并在运行下一个命令之前准备好Ruby 环境。
    • 感谢您的回复,但不幸的是我觉得这个答案太复杂了。例如,术语“任务脚本”和“DSL”并不清楚。我的意思是 rake 使用用 DSL 编写的任务脚本。好的,但目前尚不清楚那是做什么的。 “rackup”是“rack”的一部分,它是运行 Rack 应用程序的有用工具 - 这仍然不清楚。如果有人可以将这个答案简化为 ELI5,那就太好了。
    • 您可以点击我提供的链接,这里的信息比我能回答的要多。
    猜你喜欢
    • 2015-05-25
    • 1970-01-01
    • 2012-12-11
    • 2012-01-07
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多