gpt4 book ai didi

ruby - Webrick 或 Thin 运行(非 ruby​​)静态网站

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

由于 ASP.NET 开发服务器 (VS2012) 不允许我们通过 LAN (!!) 访问 URL,而且我没有配置 IIS 的权限,我正在尝试使用 WEBrick 启动静态网站,以获得局域网访问权限。我在 Windows 上运行带有 vagrant 的 Ubuntu。

在我的静态网站的根目录中,我创建了一个包含以下内容的文件 app.rb:

#app.rb

require 'rubygems'
require 'rack'

class App
def call(env)
return [200, {"Content-Type" => "text/html"}, "index.html"]
end
end

Rack::Handler::WEBrick.run(App.new, :Port => 8080)

当我运行服务器时; ruby app.rb,然后浏览到 http://localhost:8080,它给我这个错误:

ERROR NoMethodError: undefined method `each' for "index.html":String
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/handler/webrick.rb:71:in `service'
/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

有没有办法使用 WEBrick 或 Thin 来运行静态 (HTML/JS) 网站?

编辑

我听从了 Stuart 的建议并将代码更改为:

return [200, {"Content-Type" => "text/html"}, ["index.html"]]

现在,当我浏览到 URL 时,它会将“index.html”呈现为字符串,而不是呈现文件内容。

最佳答案

有一个简单的方法serving a folder over HTTP with WEBrick .

至于 Rack,它本身不处理服务文件。您必须读取要通过 HTTP 服务的文件并将文件的内容提供给 Rack,为此您可以尝试这个快速而肮脏的解决方案:

def call(env)
contents = File.open("index.html") { |f| f.read }
return [200, {"Content-Type" => "text/html"}, [contents]]
end

关于ruby - Webrick 或 Thin 运行(非 ruby​​)静态网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16414969/

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