有一种PHP的方式用Ruby做网页吗?

是否有框架或其他东西,以便我可以像PHP一样在Ruby中开发网页。 就像是

 <?ruby puts '

Hello there!

' ?>

我在网页中使用Ruby的唯一看法是巨大的复杂框架,它与PHP的工作原理完全不同。 我的意思是,确定这对于3层模型都很好,但是当你只是想在网页中完成一些简单的事情(在PHP中很简单)时,设置这么大的框架似乎并不合适。 特别是当你真的想要用Ruby制作的1页时,其余的都是纯HTML。

两个词: Sinatra和ERB

(对于轻量级站点,至少)。

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

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可执行文件的路径(运行which ruby以获取路径),也可以指定接受文件名作为第一个参数的任何其他脚本。 如果你使用ruby可执行文件,没有什么神奇的事情发生,你不能在不添加一些ERB编译自己的情况下将erb插入到文件中。 但是,您可以使用我的ruby-cgi脚本,它可以执行以下操作:

  • 首先,它接受文件并将其解释为ERB,这使得语法看起来更像PHP(参见下面的示例)。
  • 其次,它将CGI对象初始化为全局变量$CGI 。 有关如何使用此示例的示例,请参见下文。

这是一个关于如何使用ruby-cgi “magic”的简单示例脚本:

 <% header "Content-Type" => "text/html" %>   <%= $CGI['title'] %>   

<%= $CGI['title'] %>

假设您将其放入webroot,名称为example.rb 。 如果您使用类似于http://example.com/example.rb?title=Hello%20world的URL访问它,则应将标题设置为“Hello world”,并且应显示带有“Hello world”的

“ 在里面。

如果您发现脚本有任何错误,请随意分叉并更新它。

你见过Nanoc吗? 这是一个非常简单的ruby编译器,它通过模板引擎输出静态页面。 可能对您的需求来说太简单了,但有时它很方便。

您可以使用https://github.com/migrs/rack-server-pages

该页面的说明。

总结:

  • gem install rack-server-pages

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

    require 'rack-server-pages' run Rack::ServerPages

  • 创建public / index.erb:

    Hello rack!

    <%= Time.now %>

  • 执行rackup ,您的Ruby驱动页面已准备就绪。

  • 它也适用于其他应用程序服务器 ,例如,对于乘客独立,您只需要转到该文件夹​​并运行passenger start