我需要在Ruby(非Rails或任何其他框架)中轻松获取GET等请求数据的最低要求是什么?
我想避免在rails或任何其他框架上使用ruby来获取这些数据,因此理想的答案不会有框架依赖。
我当前的设置在apache script
上的cgi-bin
中有一个ruby文件(site.com/script
)
#!/usr/bin/env ruby
# bare minimum to output content
puts "Content-type: text/html"
puts
puts "it works!" #works fine.
# how would I obtain request data like GET parameters here
# for a url like site.com/script?hi=there
# in PHP, I would $_GET['hi']
答案 0 :(得分:5)
啊,使用CGI课解决了我的问题。
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html
require 'cgi'
cgi = CGI.new
cgi.params.each do |key, val|
puts key
puts val
end
因此site.com/script?hi=there
会输出hi\nthere
答案 1 :(得分:5)
如果没有框架,请不要这样做。有一些超轻量级的,如Sinatra尽可能少,以确保您获得正确执行此操作所需的支持。 CGI于20世纪90年代去世,现在不需要回来了。
要编写Sinatra应用程序,您基本上定义了一个方法,然后将其部署到您的服务器。当然,你可能会抱怨工作多少,但是如果你没有适当的部署程序,那么在你开始之前就遇到了麻烦。
Ruby有许多基础架构构建的基础架构,它通过像Passenger这样的模块挂钩到Apache,这些模块比cgi-bin
执行的操作要多得多,而且没有与之相关的所有风险。
典型的Sinatra应用程序如下:
get '/example/:id' do
"Example #{params[:id]}!"
end
真的没什么可比的,它最终比旧的CGI方式更少很多。
答案 2 :(得分:2)