Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby等价于PHP';新加坡元_Ruby_Apache_Cgi Bin - Fatal编程技术网

Ruby等价于PHP';新加坡元

Ruby等价于PHP';新加坡元,ruby,apache,cgi-bin,Ruby,Apache,Cgi Bin,在Ruby(而不是Rails或任何其他框架)中,要轻松获得像GETs这样的请求数据,我需要的最低要求是什么 我希望避免使用RubyonRails或任何其他框架来获取这些数据,因此理想的答案不会有框架依赖性 我当前的设置在apache(site.com/script)上的cgi-bin中有一个ruby文件(script) 啊,用CGI类解决了我的问题 因此site.com/script?hi=there将输出hi\n如果您的web服务器将脚本作为程序调用,则内容将位于QUERY\u字符串环境变量

在Ruby(而不是Rails或任何其他框架)中,要轻松获得像GETs这样的请求数据,我需要的最低要求是什么

我希望避免使用RubyonRails或任何其他框架来获取这些数据,因此理想的答案不会有框架依赖性

我当前的设置在apache(
site.com/script
)上的
cgi-bin
中有一个ruby文件(
script


啊,用CGI类解决了我的问题


因此
site.com/script?hi=there
将输出
hi\n如果您的web服务器将脚本作为程序调用,则内容将位于
QUERY\u字符串
环境变量中,可通过对象访问。如果没有框架,您将不得不将其解析为单独的名称-值对,以获得类似PHP的
$\u get


因为Ruby是一种通用编程语言,所以它没有处理HTTP请求或CGI环境的核心类和方法。这就是为什么建议使用框架(如RubyonRails)来处理协议级别的解析和设置。犯错误的地方太多了,不值得重新发明轮子。

如果没有框架,请不要这样做。有一些超轻的,像这样的尽可能少做,以确保你有支持你需要这样做的正确。CGI在20世纪90年代去世,现在不需要再回来了

要编写Sinatra应用程序,基本上需要定义一个方法,然后将其部署到服务器上。当然,您可能会抱怨这需要做多少工作,但如果您没有一个正确的部署过程,那么在开始之前您就遇到了麻烦

Ruby有很多基础设施,这些基础设施都是围绕着Rack这样的东西构建的,Rack通过类似的模块连接到Apache上,比
cgi-bin
做的要多得多,而且没有与之相关的所有风险

典型的Sinatra应用程序如下所示:

get '/example/:id' do
  "Example #{params[:id]}!"
end

它实际上什么都没有,结果比旧的CGI方式少了很多工作。

你在Ruby上使用的是什么web框架?没有
框架,你会怎么做?(我更新了问题)您使用的是什么web服务器(如果是Apache,您在Ruby中使用的是什么模块)?Ruby与PHP不同——简单地将文件放到公共html中是行不通的。您将需要运行一个支持Ruby文件服务的Web服务器。我只是在apache上使用一个CGIBIN。它目前正在工作,输出这个ruby脚本使用
put
在内容头之后生成的html。我只是想知道如何在Rubyth中获取最低级别的数据,这是不正确的。Ruby的核心库中包含了可以为您做很多这方面的工作,但用于简单的事情可能会令人讨厌。@tadman是的,这就是为什么我编辑为“核心”而不是“内置”的原因。该设计仍然不同于PHP,PHP中的所有内容都内置于语言中,没有
require
s或
include
s(糟糕的设计,IMHO)。它确实有“核心”类和方法。它没有太多内置的东西。除了Object、Fixnum和一些基本类型之外,几乎所有Ruby元素都是动态加载的。不过,这种区别毫无意义。HTTP随Ruby一起提供,可以在任何安装上使用。我问这个问题的原因纯粹是学术上的。仅仅学习Ruby的核心功能仍然是非常有价值的。感谢您推荐乘客BTW,并考虑将此标记为答案。你会得到一个甜美的徽章,这个问题不会被认为是公开的!这让我等了两天才把自己的答案记下来。
require 'cgi'

cgi = CGI.new

cgi.params.each do |key, val|
   puts key
   puts val
end
get '/example/:id' do
  "Example #{params[:id]}!"
end