我理解“bundle exec”是在指导编译器在给定的目录和gem文件的上下文中执行一些东西。bundle exec rake和bundle exec rackup有什么区别?另外,在bundle exec rackup的情况下,执行流的开始是什么?
bundle exec rake
bundle exec rackup
ddarikpa1#
它们是不同的工具。
rake
rackup
rack
rackup是运行Rack应用程序的有用工具,它使用Rack::Builder DSL来配置中间件并轻松构建应用程序。rackup会自动计算出它运行的环境,并以FastCGI、CGI或WEBrick的形式运行应用程序--所有这些都来自相同的配置。要运行Rack应用程序,您可以将路径作为参数传递给它:bundle exec rackup yourapp.ru或者使用应用程序初始化创建config.ru文件,然后运行bundle exec rackup。下面是最小的Rack应用程序:
bundle exec rackup yourapp.ru
config.ru
run ->(env) { [200, {'Content-Type' => 'text/html'}, ['Hi Mugen']] }
UPD
正如@tadman在下面的评论中提到的,bundle exec只是加载Gemfile中的内容并准备好环境。此外,根据您的设置,您可以在不使用bundle exec命令的情况下运行rake和rackup。
bundle exec
Gemfile
wfypjpf42#
我在这里看到四个重叠的问题:
*什么是bundle exec <whatever>?
bundle exec <whatever>
/usr/bin/<whatever>
/usr/bin/env <whatever>
exec
<whatever>
bundle exec ...
make
2条答案
按热度按时间ddarikpa1#
它们是不同的工具。
rake
运行使用特殊DSL定义的任务脚本。rackup
是rack
的一部分,rack
是一个最小的Web服务器接口。rackup是运行Rack应用程序的有用工具,它使用Rack::Builder DSL来配置中间件并轻松构建应用程序。rackup会自动计算出它运行的环境,并以FastCGI、CGI或WEBrick的形式运行应用程序--所有这些都来自相同的配置。
要运行Rack应用程序,您可以将路径作为参数传递给它:
bundle exec rackup yourapp.ru
或者使用应用程序初始化创建config.ru
文件,然后运行bundle exec rackup
。下面是最小的Rack应用程序:
UPD
正如@tadman在下面的评论中提到的,
bundle exec
只是加载Gemfile
中的内容并准备好环境。此外,根据您的设置,您可以在不使用bundle exec
命令的情况下运行rake
和rackup
。wfypjpf42#
我在这里看到四个重叠的问题:
*什么是
bundle exec <whatever>
?/usr/bin/<whatever>
. or./usr/bin/env <whatever>
exec
是bundle的一个关键字,它可以理解bundle exec
后面的<whatever>
只是一个名字bundle exec
准备一些东西,然后尝试运行<whatever>
*
rake
和rackup
有什么共同点?bundle exec ...
启动*
rake
是什么?make
的工具,make
一样,它从一个用rake特定语言编写的文件中获取指令。*
rackup
是什么?rack
,转config.ru
rack
的Ruby代码来服务请求