Ruby新手运行Sinatra代码无输出 进程正常退出问题咨询
问题原因
这是Sinatra这类Web框架的运行逻辑和你当前的运行方式不匹配导致的。
你写的不是执行完就退出的普通单文件Ruby脚本,是需要常驻后台监听端口的Web服务。你现在应该是用VS Code的Code Runner插件点击运行按钮执行的代码,这个插件的默认Ruby运行逻辑不会维持Sinatra的服务进程,程序加载完路由定义就直接执行结束退出,所以你会看到程序0.2秒就以退出码0结束,既没有服务启动日志,也不会返回任何内容。
调整方法
- 最稳妥的入门级方案:不要用编辑器内置的一键运行按钮启动这类Web服务。直接打开系统终端,切换到
hello_web.rb所在的c:\coding\ruby visual code files\目录,如果还没装Sinatra先执行gem install sinatra完成安装,之后运行命令:
ruby hello_web.rb
命令执行后你会在终端看到Sinatra的启动日志,默认服务会监听本地4567端口,此时打开浏览器访问http://localhost:4567/hello/就能看到Hello, web!的输出内容。要停止服务就在终端按Ctrl+C即可。
- 如果一定要在VS Code内点击运行,需要修改Code Runner插件对应Ruby的执行配置,或者安装官方Ruby扩展配置对应的调试启动文件,但入门阶段直接用系统终端运行可以避开绝大多数编辑器配置导致的奇怪问题,学习成本更低。
- 补充:你代码里
get和后面括号之间的空格不影响程序运行,不需要特意修改。
内容的提问来源于stack exchange,提问作者paul
相关产品推荐
相关产品推荐

