Php 有没有一种用Ruby制作网页的好方法?

Php 有没有一种用Ruby制作网页的好方法?,php,ruby,Php,Ruby,有没有一个框架或者其他什么东西可以让我用Ruby和PHP一样开发网页。差不多 <html><head></head><body> <?ruby puts '<p> Hello there!</p>' ?> </body></html> 我看到的在网页中使用Ruby的唯一一件事是巨大而复杂的框架,它与PHP的工作方式完全不同。我的意思是,对于三层模型和类似的模型来说,这都是很好的,

有没有一个框架或者其他什么东西可以让我用Ruby和PHP一样开发网页。差不多

<html><head></head><body>
<?ruby
  puts '<p> Hello there!</p>'
?>
</body></html>

我看到的在网页中使用Ruby的唯一一件事是巨大而复杂的框架,它与PHP的工作方式完全不同。我的意思是,对于三层模型和类似的模型来说,这都是很好的,但是当你只想在网页中完成一些简单的事情(在PHP中是微不足道的)时,设置这样一个大的框架似乎是不正确的。特别是当你真的只想要一个用Ruby制作的页面,而剩下的是纯HTML时。

两个词:和

(至少对于轻量级站点)


Sinatra是一个简单的HTTP服务器,ERB是一个模板系统,其作用类似于PHP中的模板。

您看到了吗?这是一个非常简单的ruby编译器,它通过模板引擎输出静态页面。PHP的默认行为是作为CGI脚本运行,这意味着web服务器调用
PHP CGI
或类似的东西,传递大量的环境变量。要对Ruby执行同样的操作,需要设置一个脚本来处理.rb文件。这取决于您的web服务器,但如果您使用的是Apache 2.2,请将其放在httpd.conf或.htaccess文件中:

Action ruby-cgi /path/to/ruby-cgi
AddHandler ruby-cgi .rb
# You might want to add this too:
DirectoryIndex index.rb index.html
您可以指定ruby可执行文件的路径(运行
哪个ruby
来获取路径),也可以指定接受文件名作为第一个参数的任何其他脚本的路径。如果您使用ruby可执行文件,则不会发生任何神奇的事情,并且如果不添加一些erb编译,您就无法将erb插入到文件中。但是,您可以使用我的脚本,它可以做以下几件事:

  • 首先,它接受文件并将其解释为ERB,这使语法看起来更像PHP(参见下面的示例)
  • 其次,它将CGI对象初始化为全局变量
    $CGI
    。有关如何使用此功能的示例,请参见下文
这是一个关于如何使用
ruby cgi
“magic”的简单示例脚本:

“text/html”%>
假设您将其放入webroot,名称为
example.rb
。如果您使用类似的URL访问此文件,则应将标题设置为“Hello world”,并应显示带有“Hello world”的标题

如果您发现脚本中有任何错误,请随时提出要点并进行更新。

您可以使用

那一页的说明

总结:

  • gem安装
    机架服务器页面

  • 在“应用程序”的根文件夹中创建
    config.ru

    需要“机架服务器页面”
    运行Rack::ServerPages

  • 创建public/index.erb:

    你好!
    

  • 执行rackup,您的Ruby支持的页面已准备就绪

  • 它还可与其他应用程序服务器配合使用,例如,对于passenger standalone,您只需转到该文件夹并运行
    passenger start


如果要使用PHP,请使用PHP。不要试图将PHP转换成Ruby。这适用于任何其他两种技术。在本例中,@cletus的可能副本毫无意义,因为Ruby和PHP语言域几乎完全重叠。经验丰富的开发人员隐含的座右铭“像我所做的那样学习一切”,加上典型的点头之交鼓掌的唱诗班,实在是太无聊了。像使用PHP一样快速、简单地将Ruby集成到HTML文件中是完全合理的,看起来非常不错。那是什么许可证?哎呀,我总是忘了给我的东西加许可证。这是麻省理工学院的许可证(我现在在代码中添加了许可证部分)。FWIW,这是我的工作
httpd.conf
ruby cgi.rb
,以及我在ruby 1.9.3和Apache2.2.20实验中的一个示例erb文件:ruby社区中还没有一个大型的维护项目来实现这种功能吗?
<% header "Content-Type" => "text/html" %>
<html>
  <head>
    <title><%= $CGI['title'] %>
  </head>
  <body>
    <h1><%= $CGI['title'] %>
  </body>
</html>