如何使用 WEBrick 执行 Ruby 代码而不是将代码转储到浏览器?

2024-05-02

当我在浏览器中运行程序时遇到问题WEBrick服务器 http://ruby-doc.org/stdlib-2.1.1/libdoc/webrick/rdoc/WEBrick.html。它显示了 2loop.rb 文件中编写的代码。

当我跑步时ruby -run -e -httpd. -p 5000在命令提示符下,然后加载http://localhost:5000/2loop.rb在浏览器中,它显示 2loop.rb 中的代码而不是运行它。

我怎样才能执行 2loop.rb 程序呢?


TL;DR

您可以通过将当前工作目录作为 Web 服务器的根目录来对自己执行此操作。您实际上并没有运行文件中的代码;你只是告诉WEBrick http://www.ruby-doc.org/stdlib-2.1.1/libdoc/webrick/rdoc/WEBrick.html提供您在 URI 中指定的任何文件。http://localhost:5000/2loop.rb将在您发布的示例中将“2loop.rb”作为 text/html 提供。

使用un.rb

您使用的标志实际上并不是“运行”。相反,-rflag 实际上加载了一个模块,在本例中是un.rb http://ruby-doc.org/stdlib-2.1.1/libdoc/un/rdoc/un_rb.html模块。使用 un.rb 启动 WEBrick 的操作如下:

$ ruby -run -e httpd . -p 5000

并在文档根目录中启动一个 Web 服务器。在这种情况下,点表示使用当前工作目录作为根目录。这实际上并不是您想要启动放置在 Ruby 文件中的代码。

以编程方式运行 WEBrick

使用一些片段WEBrick 文档 http://www.ruby-doc.org/stdlib-2.1.1/libdoc/webrick/rdoc/WEBrick.html,您将看到可以创建一个名为“2loop.rb”的文件,其中包含以下内容:

#!/usr/bin/env ruby

require 'webrick'

root   = File.path '/tmp/public_html'
server = WEBrick::HTTPServer.new :Port => 5000, :DocumentRoot => root

trap 'INT' do server.shutdown end
server.start

这将为端口 5000 上的 /tmp/public_html 目录提供文件,您可以通过以下地址访问http://localhost:5000。然后您可以使文件可执行并启动服务器./2loop.rb,或者只是运行ruby 2loop.rb如果您出于某种原因不想使文件可执行。

如果您不希望 WEBrick 只提供文件服务,则必须添加自定义行为 http://ruby-doc.org/stdlib-2.1.1/libdoc/webrick/rdoc/WEBrick.html#module-WEBrick-label-Custom+Behavior到 2loop.rb 脚本内的 Web 服务器。这是一个相当低级的事情,但可能适合您的需求。

明智的选择

你可能应该使用像这样的网络框架红宝石 on Rails http://rubyonrails.org/ or Sinatra http://www.sinatrarb.com/如果您不想自己编写所有低级行为。 Sinatra 尤其是一个非常轻量级的替代方案。这个例子:

#!/usr/bin/env ruby

require 'sinatra'
set :port, 5000
get '/hello' do
  "Hello, World!"
end

将创建一个 URLhttp://localhost:5000/hello使用返回“Hello, World!”的自定义操作作为浏览器内响应。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 WEBrick 执行 Ruby 代码而不是将代码转储到浏览器? 的相关文章

  • 如何使用 Python 与窗口的 GUI 交互?

    假设您想打开myapp exe 打开第三个菜单 然后选择第二个菜单项 即像用户使用键盘或鼠标一样 然后在对话框窗口中选择第二个按钮 pyahk https pyahk readthedocs io en latest and pyautog
  • Mongoid - 同一外域的两个域的逆

    我试图让以下 Mongoid 关系发挥作用 但每个团队的游戏字段都是一个空数组 这不是一个有效的关系模型吗 我是否需要分开比赛 即主场比赛和客场比赛 class Team include Mongoid Document has many
  • 如何阻止与 RSpec 和 Capybara 的外部连接?

    在我的 Rails 项目中 我想编写非理想条件的测试 例如缺乏互联网连接或超时 例如 我正在使用 gem 来联系 API 并且希望确保在我的应用程序和外部 API 之间存在连接问题时能够正确处理错误 我已经可以通过用录像机制作固定装置并从
  • 如何在 Visual C++ 中宣传 Bonjour 服务

    我试图弄清楚这是否可能 但是通过 Visual C 宣传 Bonjour 服务的最简单方法是什么 您可以使用DNS服务发现客户 dns sd Windows Bonjour 安装程序把它放进去C Windows system32 dns s
  • SSL_connect 返回=1 errno=0 状态=SSLv3 读取服务器证书 B:证书验证仅在代理时失败

    这篇文章几乎重复了许多其他帖子 包括Rails 4 和 Ruby 2 Net HTTP SSL 请求 OpenSSL SSL SSLError SSL connect returned 1 errno 0 state SSLv2 v3 re
  • Windows平台下C语言控制串口DTR和RTS引脚

    如何在windows平台上控制串口的DTR和RTS引脚 我希望通过升高或降低电压来对其进行位敲击或操作 您需要使用EscapeComm 函数 https learn microsoft com en us windows desktop a
  • 使用 Windows 命令行连接文本文件,删除前导行

    我需要连接一些相对较大的文本文件 并且更喜欢通过命令行来完成此操作 不幸的是我只有Windows 无法安装新软件 type file1 txt file2 txt gt out txt 允许我几乎得到我想要的 但我不希望 file2 txt
  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • windows关闭tomcat后保持端口锁定

    我遇到了一个问题 该问题发生在不同站点的 3 台不同服务器上 问题是 当我关闭 Windows 服务器上的 Tomcat 7 和 8 5 版本 服务并尝试重新启动该服务后 该服务将无法启动 因为 tomcat 认为端口仍在使用中 以下是错误
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知
  • “此应用程序已请求运行时以异常方式终止它”的原因是什么?

    Visual C 运行时抛出一个常见错误 此应用程序已请求运行时以异常方式终止它 请联系应用程序的支持团队以获取更多信息 该错误消息实际上是什么意思mean 让我用一个比喻来准确地解释我的问题 如果我看到一条消息 异常 访问冲突 0xc00
  • 如何计算带有偏移量的异或?

    我想用不同的偏移量进行异或计算以在计算中列出 例子 key 0 1 0 text 0 1 0 1 0 1 0 1 1 1 异或计算 key 0 text 0 key 1 text 1 key 2 text 2 key 0 text 3 ke
  • 如何在 Rails 4 中使用 params.require

    我有一个像这样的私有方法 用于有四个字段的注册表单 firstname email password and confirm password 我不知道如何检查password confirmation def user params pa
  • 如何从 Rails 中的 date_select 或 select_date 获取日期?

    Using select date给我回一个params my date with year month and day属性 如何轻松获取 Date 对象 我希望有类似的事情params my date to date 我很高兴使用date
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • PostgreSql“运行安装后步骤...数据库集群初始化失败”

    我是一名 Windows 用户 我花了几个小时不断地安装和卸载 然后才使其正常工作 前 10 次左右才看到标题中的错误消息 我将其作为一个自我回答的问题放在这里 以防止其他人在安装时可能遇到同样的问题 并为像我这样第一次使用 Postgre
  • Heroku 部署错误

    在 Windows 环境中 尝试部署到 Heroku 时出现以下错误 C Ruby lib ruby gems 1 8 gems heroku 1 9 13 lib heroku commands base rb 32 in 没有这样的文件
  • 使用 Windows 批处理文件在文本文件中添加新行

    我有一个文本文件 其中有 200 多行 我只想在第 4 行之前添加一个新行 我使用的是 Windows XP 输入前的示例文本文件 header 1 header 2 header 3 details 1 details 2 输出后 hea

随机推荐

  • iPhone sdk,保存MPMediaItemCollection吗?

    我的应用程序显示MPMediaPickerController 我想保存MediaItem并在启动时再次开始播放 我认为这可以使用MPMediaQuery 看来我应该使用MPMediaItemPropertyPersistentID但我不知
  • jQuery 1.4.2 VSDoc

    在哪里可以获得 jQuery 1 4 2 的 VSDoc 喜欢冒险的人可以从 2949 开始添加以下几行 delegate function selector types data fn
  • Bootstrap 4 网格系统中的“col”上没有填充是否正常?

    我是第一次使用 Bootstrap v 4 我有一个footer就是使用新的flex col并且它在桌面上运行得很好 但是当我切换到移动设备时 它们彼此堆叠得如此紧密 没有垂直边距 填充 这是正常行为吗 另外 我希望内容居中或至少有一些偏移
  • Java util Logger 未写入文件

    我为我的应用程序编写了一个愚蠢的记录器 它将信息 警告和严重消息写入日志文件 前一段时间它工作得很好 但突然间 它无缘无故地停止工作了 如果日志文件不存在 它会继续创建该文件 但不写入任何内容 我找不到它现在不起作用的原因 我会感谢一些帮助
  • Eigen 未对齐数组断言

    我有一个类可以找到二维点集的凸包 它包含一个结构体 其中有 2Eigen Matrix
  • 通过 CMD 获取启用 SSL 的 Kafka 中的最新偏移量

    我一直在使用下面的 CMD 从打开纯文本端口的 Kafka 队列中获取最新的偏移量 kafka run class sh kafka tools GetOffsetShell broker list server 9092 topic sa
  • ReactDOM 使用同一个类来渲染多个元素?

    我有多个元素使用相同的类并具有相同的内容 所以我可以使用 ReactDOM 来渲染它们 而不是 ReactDOM render
  • MVC User.Identity.Name 包含名字和姓氏

    我已将名字和姓氏添加到ApplicationUser Class public class ApplicationUser IdentityUser public async Task
  • 如何在 .net 中为 Google 云存储签名 url

    我想知道如何使用 net中的谷歌云存储类生成signurl 我已经根据要求创建了字符串 GET 1388534400 bucket objectname 但我现在想用 p12 密钥签署这个 url 然后想让它变得 url 友好 该库没有显示
  • 如何在 Symfony2 中使用 Doctrine OracleSessionInit 监听器?

    我正在使用 oracle 并且收到此错误 无法将数据库值 17 NOV 11 12 17 33 AM 转换为学说类型日期时间 预期格式 Y m d H i s 另外 我无法创建新行 因为 Oracle 抱怨日期时间格式 我知道mysql的日
  • 如何将 NaN 数组插入 numpy 二维数组

    我试图在二维数组中的特定位置插入任意数量的 NaN 值行 我正在将来自微控制器的一些数据记录在 csv 文件中并使用 python 进行解析 数据存储在 3 列 2D 数组中 如下所示 122 0 1 0 47 0 123 0 1 0 47
  • 计算链接上的点击次数(不带 onclick)[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有诸如此类的链接 a href h
  • scipy 的 curve_fit 函数的尺寸问题

    我对 python 中的曲线拟合以及一般的 python 都很陌生 目前 我正在尝试使用 scipy 中的 curve fit 模块来拟合 4 个光谱峰 简而言之 我的文本文件中有两列数据 所以我的第一步是将数据导入到两个数组中 一个包含
  • spring roo vs appfuse 生成服务/dao 层

    我正在寻找有经验的用户对 spring roo 和 appfuse 的反馈 您认为逆向工程数据库表和生成服务层 dao 层和 jpa 实体哪一个更好 如果我没记错的话 spring roo 目前无法对数据库进行逆向工程 只是一个快速更新 通
  • Python lmfit:拟合 2D 模型

    我正在尝试将二维高斯拟合到一些灰度图像数据 该数据由一个二维数组给出 lmfit 库实现了一个易于使用的模型类 它应该能够做到这一点 不幸的是文档 http lmfit github io lmfit py model html http
  • 如何在 Svelte 3 中有条件地添加和删除 `use:` 属性?

    有没有一种方法可以优雅地有条件地添加和删除use Svelte 3 的财产 Example
  • 所有 SMTP 通信是否都发生在 25 以上? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 所有 SMTP 通信是否都在端口 25 上的域之间发送电子邮件 所有通信都不安全吗 明白使用像 Gmail 一样的通信是受 Gmail 服务器保护的
  • 无法设置 PageSetup 类的 PaperSize 属性

    我正在尝试使用 VB NET 打印 Excel 电子表格 但出现错误 无法设置 PageSetup 类的 PaperSize 属性 这是我的代码 Dim oldCI As System Globalization CultureInfo S
  • 动态向表变量添加 50 列

    我想向定义为变量的表添加大约 50 列 这些列的名称来自另一个表 基本上它们只是数字 DEPA KEY 部门键 是否可以使用循环或类似的东西动态添加这些列 表定义为变量 这里我想动态添加 50 列 DECLARE USERS TABLE U
  • 如何使用 WEBrick 执行 Ruby 代码而不是将代码转储到浏览器?

    当我在浏览器中运行程序时遇到问题WEBrick服务器 http ruby doc org stdlib 2 1 1 libdoc webrick rdoc WEBrick html 它显示了 2loop rb 文件中编写的代码 当我跑步时r