在PHP世界中,你可以创建index.php
文件,放入一些内联代码和原始HTML,运行Apache,它就可以工作了。
有很多关于使用内联代码等不良做法的讨论。所以我们就不讨论这个话题了。
如何以同样的方式启动我的Ruby应用程序?我想用ERB
来混淆代码,所以它看起来是这样的
# index.rb
<h1>Hello world!</h1>
<div>
1 + 1 = <%= 1 + 1 %>
</div>
我的问题是:
- 是什么让PHP工作的?
- 创建我的"微框架"的一些基本知识:与应用程序/http服务器(Mongrel, nginx,绑定在http端口和所有此类工作),与http请求:会话,参数,GET/POST等(Rack?),发送响应(ERB模板)。
AFAIU(理解)在PHP中有对HTTP的原生支持,所以我必须使用Rack来支持Ruby
所以我可以用Ruby做我自己的(出于教育目的)php风格的web开发微框架:D
乌利希期刊指南
我真正想做的是一个应用程序,它只会得到请求url,运行那个文件,并返回HTML作为响应。此外,这个应用程序应该被允许绑定在一些端口
上。index.rb
info/about.rb
info/contacts.rb
products/product.rb
所以它应该解析url localhost/index.rb
和运行index.rb
, localhost/products/product.rb?product_id=10
和运行products/product.rb
和传递product_id=10
作为参数哈希。
乌利希期刊指南2
我认为开始挖掘Camping
微框架的好点:
https://github.com/camping/camping
它大约是5Kb的重量,所以我不应该在它混淆
使用Ruby编写CGI脚本是可能的,但通常不会这样做,因为我们有更好的解决方案。
每个页面一个文件并不是一个非常有用的抽象,它只是PHP支持的一个。Ruby有更好的方法来抽象web应用程序(如Sinatra, Rails,甚至Rack),所以我们更愿意使用它们。
将文件名放在url中是PHP设计的另一个不幸的副作用。这是实现揭示和不必要的(你不是得到一个Ruby页面,你得到一个HTML页面),所以我们选择不这样做。
Ruby中的CGI和FCGI也比其他解决方案慢。这并不是因为它们的性能受到了限制;这主要是因为让Ruby web应用程序更快的努力已经花在了更有用的领域,比如Rack和Rails。没有人真正使用CGI,所以没有人真正关心使它快。如果你真的想走这条路,mod_ruby会让CGI脚本更快一些,但同样,还有更好的方法。Apache可以通过加载mod_php模块来运行PHP。
我相信要运行ruby,你需要将它安装在服务器上,并将mod_ruby加载到apache中。看看:http://www.modruby.net/en/
您正在寻找CGI。Apache模块mod_php
或mod_ruby
只是为PHP或Ruby编写的CGI脚本提供的打包。