AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 54923
Accepted
chutsu
chutsu
Asked: 2009-08-18 02:24:05 +0800 CST2009-08-18 02:24:05 +0800 CST 2009-08-18 02:24:05 +0800 CST

如何设置网络服务器以运行内联 ruby​​?

  • 772

我想运行嵌入在某种 html 网页中的内联 ruby​​ 代码。周围有 ruby​​ 服务器,例如 mongrel、thin,但我只是想在 html 中运行内联 ruby​​,而不需要制作符合某些我不想学习的框架的所谓 ruby​​ 应用程序。我希望 ruby​​ 代码像 PHP 一样运行,以便我可以访问数据库、打印表单等。

我应该有什么设置?

php
  • 5 5 个回答
  • 2192 Views

5 个回答

  • Voted
  1. Best Answer
    wzzrd
    2009-08-18T02:57:54+08:002009-08-18T02:57:54+08:00

    诚然,我从来没有这样做过,但是mod_ruby应该能够做到这一点。如果你能够安装 mod_php,你就可以使用 mod_ruby。

    嵌入式 PHP 如下所示:

    <?php
        print("Hello world");
    ?>
    

    嵌入式 Ruby 看起来像这样:

    <% var="Hello world %>
    <%= var %>
    

    或类似的东西;有一段时间没有这样做了;-) 更多语法内容可以在这里找到。长话短说:安装 mod_ruby 就可以了。

    • 3
  2. dvyjones
    2009-12-15T11:18:34+08:002009-12-15T11:18:34+08:00

    你可以看看我对 SO 上类似问题的回答。这有点类似于丹尼尔的回答,但我创建了一个 ruby​​-cgi 脚本,它为你做了一些“魔法”。

    • 1
  3. Tate Johnson
    2009-08-18T02:56:32+08:002009-08-18T02:56:32+08:00

    Sinatra足够小,可以不妨碍您(而不是告诉您该做什么),但功能齐全,您可以快速上手,无需太多努力。

    您可以免费获得路由、视图(Erb 或 HAML/SaSS)、帮助程序、过滤器和对各种数据库适配器的支持。Sinatra 不会对您将要做什么做出任何假设。您的项目可以根据需要简单或复杂。更重要的是,文档非常好,并且有很好的示例(真实项目!)。

    使用任何机架兼容的 HTTP 服务器(例如 Mongrel 或 Thin)可以轻松部署 Sinatra 应用程序。

    • 0
  4. Daniel
    2009-10-31T16:29:28+08:002009-10-31T16:29:28+08:00

    另外两个选项是使用erb和 cgi(2) 或 eruby(3)(如果您在安装 mod_ruby 时遇到问题):

    1. erb带有*.rb-controller-sort-of。这需要一个页面的两个文件,但可以将逻辑和视图进行一些简单的分离(没有“框架”)。

      设置起来非常简单,只需输入一行httpd.conf或.htaccess(给定可执行权限):

      AddHandler cgi-script .rb
      

      你mypage.eruby是一个类似 php 的 ERB 模板:

      <p>Hello <%= foo %>!</p>
      

      但它涉及一些使用的编码。在您的mypage.rb文件中:

      #!/usr/bin/ruby
      require 'cgi'
      require 'erb'
      
      # Use cgi for handling params and sending headers etc.
      cgi = CGI.new
      
      # connect to db etc.
      
      # prepare variables (Or rather some object to bind to - read docs for that ...)
      foo = "World"
      
      # read in your template
      template = ERB.new(File.read('mypage.eruby'))
      content = template.result
      
      # Print stuff
      print cgi.header
      print content
      

      现在请求mypage.rb

    2. 使用eruby可执行文件(更像经典的 php 风格)。对于简单的脚本来说可能更容易。

      下载 eruby 可执行文件(您的平台可能有一个二进制文件)并将其复制到/cgi-bin/eruby

      在httpd.conf:

      AddType application/x-httpd-eruby .rhtml
      Action application/x-httpd-eruby /cgi-bin/eruby
      

      然后创建你的mypage.rhtml:

      <% 
          # Do ruby stuff here, connect to DB etc.
          foo = "World"
      %>
      <p>Hello <%= foo %>!</p>
      

      现在请求mypage.rhtml

    我更喜欢 1,但是一旦安装了 eruby,开始使用 2 可能会更容易。请原谅我的任何错误 - 我还没有测试我建议的配置和代码。

    (我是发布工作链接的新手。如果有权限的人喜欢修复它们,我将不胜感激。)

    • 0
  5. Redoman
    2015-10-06T03:39:53+08:002015-10-06T03:39:53+08:00

    一个非常简单的设置是使用Phusion Passenger (一个能够运行任何 Ruby 机架应用程序的 Web 应用程序服务器,它既可以独立运行,也可以作为 apache/ngix 模块工作)+机架服务器页面gem(这是一个小型机架应用程序,允许您服务带有嵌入 Ruby 代码的简单 HTML 页面)。

    在独立模式下使用Passenger,您只需要在您要服务的文件的根目录中运行“passenger start”,并在该文件夹中拥有一个只有2行的config.ru文件:

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

    您现在可以通过将任何 .erb 文件放在public子文件夹中来提供它们。

    您也可以只运行“rackup”并让页面由您选择的 ruby​​ 服务器提供服务。

    • 0

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve