- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有以下代码,其中 fork 了一个 WEBrick 实例,我想等到 webrick 启动,然后再继续其余代码:
require 'webrick'
pid = fork do
server = WEBrick::HTTPServer.new({:Port => 3333, :BindAddress => "localhost"})
trap("INT") { server.shutdown }
sleep 10 # here is code that take some time to setup
server.start
end
# here I want to wait till the fork is complete or the WEBrick server is started and accepts connections
puts `curl localhost:3333 --max-time 1` # then I can talk to the webrick
Process.kill('INT', pid) # finally the webrick should be killed
那么我如何才能等到 fork 完成,甚至更好等到 WEBrick 准备好接受连接?我找到了一段代码,它们处理 IO.pipe
以及一个读取器和一个写入器。但这不会等待 webrick 加载。
不幸的是,我没有找到任何关于这个具体案例的信息。希望有人能帮忙。
最佳答案
WEBRick::GenericServer
有一些未记录的回调 Hook (可悲的是,事实上,整个 webrick 库的记录很差!),例如 :StartCallback
, :StopCallback
, :AcceptCallback
.您可以在初始化 WEBRick::HTTPServer
实例时提供 Hook 。
因此,结合IO.pipe
,您可以这样编写代码:
require 'webrick'
PORT = 3333
rd, wt = IO.pipe
pid = fork do
rd.close
server = WEBrick::HTTPServer.new({
:Port => PORT,
:BindAddress => "localhost",
:StartCallback => Proc.new {
wt.write(1) # write "1", signal a server start message
wt.close
}
})
trap("INT") { server.shutdown }
server.start
end
wt.close
rd.read(1) # read a byte for the server start signal
rd.close
puts `curl localhost:#{PORT} --max-time 1` # then I can talk to the webrick
Process.kill('INT', pid) # finally the webrick should be killed
关于ruby - fork WEBrick 并等待开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617347/
我是 Ruby 和 Rails 新手,第一次建立项目。每次我尝试启动 WEBrick 服务器时,它都会启动然后关闭。任何帮助,将不胜感激。我似乎需要提供密码,但我不知道该怎么做。 bkuethen$
尝试在这里学习 Ruby on Rails 并遵循视频教程,但似乎无法运行环境。我现在已经使用rails new project_name 创建了一个项目,但是当我去运行服务器rails 服务器时,我
WEBrick 实例方法 mount_proc 做了什么(用简单的英语)? 文档说: mount_proc(dir, proc=nil, &block) Mounts proc or block on
首先我要说的是,我不知道自己在做什么。 好吧,既然这样,我的问题是:我正在运行 Grunt 的网络服务器来提供前端文件,并且正在运行 webrick 来提供数据 api。 Grunt 使用 grunt
首先让我说我不知道自己在做什么。 好吧,不打扰了,我的问题是:我正在运行 Grunt 的网络服务器来提供前端文件,我正在为数据 api 运行 webrick。 Grunt 使用 grunt-con
您能推荐一个修复方法吗? 我根据其他 SE 问题尝试过的补救措施: 运行捆绑安装 运行 gem 清理 运行 bundle exec rails server 运行 sudo ln -s/usr/loc
我像这样启动一个 webrick 服务器: dell@dev:/var/www/ruby$ ruby -run -httpd. -p 5000 并将此代码放入abc.rb: require 'web
我有一个在不同硬件上运行的网络应用程序,其中大部分由智能电视和机顶盒组成。 我的网络应用程序包含一个 ruby 脚本来设置应用程序以进行本地调试。此脚本构建我的应用程序,监听文件更改,并使用简单的
我之前运行的是 Linux Mint 13,现在刚切换到 Fedora 17。既然我已经切换了,我就无法再阻止 Webrick。我使用 Jetbrains Rubymine,并且启动服务器工作正常,但
我有一个非常基本的 webrick 服务器,用于运行嵌入式设备的管理页面。我们刚刚向设备添加了基本身份验证并且效果很好,但是您会像这样返回通用的“未经授权”消息: Unauthorized
我有以下代码,其中 fork 了一个 WEBrick 实例,我想等到 webrick 启动,然后再继续其余代码: require 'webrick' pid = fork do server =
如何禁止将来自 webrick 的消息回显到终端?对于出现在开头的 INFO 消息,我可以通过设置 Logger 参数来禁用它: s = WEBrick::HTTPServer.new( Port
我正在运行一个简单的 WEBrick 服务器来调试 POST 数据。我想将 POST 数据输出到日志。 我的代码是: server.mount_proc '/' do |req, res| r
就生产环境而言,使用 Phusion Passenger 或仅使用 WEBrick(例如 rails s)有什么区别? 我知道 Phusion Passenger 在 Apache 或 Nginx 上
我想在我做的时候设置默认端口 rails s 到 3010,而不必说: rails s -p 3010 ...每次。有任何想法吗? 最佳答案 您可以覆盖 Port通过将以下代码添加到 config/b
我目前有: $ rails s => Booting WEBrick => Rails 3.0.9 application starting in development on http://0.0.
如何配置 Aptana 以在 Ruby On Rails 项目上启动 webrick 服务器? 我使用选项“提升到项目”来使用 aptana 打开一个现有的 Rails 项目。我不知道如何在 Apta
我正在使用 ~/.rdebugrc 的内容运行 WEBrick文件正在 set autolist set autoeval set autoreload autolist 和 autoeval 默认开
有没有一种方法可以不冗长地启动 WEBrick 服务器。我觉得它记录了太多信息。例如: rails s --verbose=false 最佳答案 您可以在 Rails 配置中更改日志级别。 confi
目前,如果我更改lib /和app / helpers /目录中的文件,则必须重新启动服务器。有没有一种方法可以配置Rails或Webrick,以便它也可以热交换那些目录中的文件? 最佳答案 在您的c
我是一名优秀的程序员,十分优秀!