gpt4 book ai didi

ruby - 在页面刷新时运行 ruby​​ 脚本

转载 作者:数据小太阳 更新时间:2023-10-29 08:27:28 24 4
gpt4 key购买 nike

我有一个 ruby​​ 脚本 run-this.rb 可以在我运行时将实时计算输出到文本文件

ruby run-this.rb > output.txt

但是,我需要将相同的过程加载到 Web 服务器上,在该服务器上,Ruby 脚本将在页面加载时运行,网页将从 txt 文件中读取结果。

我的问题分为两部分,

1) 你如何告诉网页在加载时运行这个脚本?

2)如何在页面刷新时将run-this.rb的结果输出到output.txt

谢谢!

最佳答案

您可以使用 Sinatra framework 构建一个简单的 Web 应用程序

  • 运行你的脚本
  • 将输出保存在变量中
  • 将变量内容写入文件
  • 然后也将变量内容写入 HTTP 响应

不过,我建议您将脚本封装在 Ruby 类中,这样可以更轻松地从另一个文件运行。例如,在 run-this.rb 中:

class FooRunner
def self.run!
# write to string instead of printing with puts
result = ''

# do your computations and append to result
result << 'hello, world!'

# return string
result
end
end

# maintain old functionality: when running the script
# directly with `ruby run-this.rb`, simply run the code
# above and print the result to stdout
if __FILE__ == $0
puts FooRunner.run!
end

在同一目录中,您现在可以拥有第二个文件 server.rb,它将执行上面列表中概述的步骤:

require 'sinatra'
require './run-this'

get '/' do
# run script and save result to variable
result = FooRunner.run!

# write result to output.txt
File.open('output.txt','w') do |f|
f.write result
end

# return result to be written to HTTP response
content_type :text
result
end

使用 gem install sinatra 安装 Sinatra 后,您可以使用 ruby server.rb 启动服务器。输出将告诉您将浏览器指向何处:

[2014-01-08 07:06:58] INFO  WEBrick 1.3.1
[2014-01-08 07:06:58] INFO ruby 2.0.0 (2013-06-27) [x86_64-darwin12.3.0]
== Sinatra/1.4.4 has taken the stage on 4567 for development with backup from WEBrick
[2014-01-08 07:06:58] INFO WEBrick::HTTPServer#start: pid=92108 port=4567

这意味着您的页面现在可以在 http://127.0.0.1:4567 访问,所以请继续在浏览器中输入它。 Et voilá!

screenshot of browser with above page

显示页面后,该目录还将包含具有相同内容的output.txt

关于ruby - 在页面刷新时运行 ruby​​ 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20987718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com