Ruby命令ruby -run -e httpd工作原理及参数、方法疑问
解析
ruby -run -e httpd的工作原理 嘿,这个命令确实是Ruby藏的实用小工具,我来一步步给你拆解清楚背后的逻辑:
1. 先搞懂-run选项
-run是Ruby命令行的特殊参数,它的作用是自动加载Ruby标准库中的runner.rb模块。这个模块的设计初衷就是把一些常用的工具类功能(比如文件服务器、批量重命名、文件查找等)封装成快捷命令,不用咱们手动写完整的Ruby脚本就能直接调用。
你可以运行ruby --help看到这个参数的说明,里面会标注它是用来「run a script as a command」的。
2. httpd不是Object的方法,是runner的内置命令
你找不到httpd在Object类里的原因很简单:它根本就不是Object的方法!httpd是runner模块提供的内置命令,当你运行ruby -run -e httpd时,runner会解析这个命令,自动帮你启动一个轻量级HTTP服务器。
它的底层其实是调用了Ruby标准库中的WEBrick(较新Ruby版本可能用Puma轻量模式),默认把当前目录作为服务器根目录,这样就能直接访问目录里的文件和文件夹了。
3. 实用的扩展用法
这个命令还有几个常用参数,能满足更多场景:
- 指定服务目录和端口:
ruby -run -e httpd ./my-static-files -p 8080 - 允许外部设备访问:
ruby -run -e httpd . -b 0.0.0.0
4. 怎么查更多细节?
如果想深入了解runner模块和httpd的实现,可以运行本地Ruby文档命令ri runner,里面会列出所有runner支持的命令和详细用法。
内容的提问来源于stack exchange,提问作者Petr Beneš
相关产品推荐
相关产品推荐

