在Ruby上进行php风格的web开发:为此创建微框架


PHP-style web development on Ruby: creating microframework for that

在PHP世界中,你可以创建index.php文件,放入一些内联代码和原始HTML,运行Apache,它就可以工作了。

有很多关于使用内联代码等不良做法的讨论。所以我们就不讨论这个话题了。

如何以同样的方式启动我的Ruby应用程序?我想用ERB来混淆代码,所以它看起来是这样的

# index.rb
<h1>Hello world!</h1>
<div>
  1 + 1 = <%= 1 + 1 %>
</div>

我的问题是:

    是什么让PHP工作的?
    AFAIU(理解)在PHP中有对HTTP的原生支持,所以我必须使用Rack来支持Ruby
  1. 创建我的"微框架"的一些基本知识:与应用程序/http服务器(Mongrel, nginx,绑定在http端口和所有此类工作),与http请求:会话,参数,GET/POST等(Rack?),发送响应(ERB模板)。

所以我可以用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_phpmod_ruby只是为PHP或Ruby编写的CGI脚本提供的打包。