代码之家  ›  专栏  ›  技术社区  ›  Lucas Oman

为什么Apache还没有一个可行的mod_ruby呢?

  •  12
  • Lucas Oman  · 技术社区  · 16 年前

    虽然Ruby和Rails很流行,但这个问题似乎已经解决了。JRuby和mod_rails都很好,但是为什么不为纯Ruby提供Apache mod呢?

    5 回复  |  直到 16 年前
        1
  •  23
  •   mislav Telemachus    16 年前

    Phusion Passenger ,一个健壮的Apache模块,可以运行 Rack 具有最小配置的应用程序。它对共享主机越来越有吸引力,将任何程序转换为机架应用程序都非常容易:

    Rack应用程序是一个Ruby应用程序 对象 (不是类)响应 call . 完全需要 这个 环境,并返回 确切地 三个价值观 :状态、状态 标题和正文。

        2
  •  18
  •   Jörg W Mittag    16 年前

    mod_ruby 确实:它在Apache中嵌入了MRI),特别是多线程的(Apache就是这样)。它不是特别线程安全的,并且有相当多的全局状态。

    这个全局状态意味着,例如,如果一个Rails应用程序修改某个类,那么 所有其他 而且 看看这个修改过的类。

    另一个问题是MRI源代码不容易破解。核磁共振成像已经有15年的历史了,并且开始显现出来。

    工作正常,在某个时候,维护人员干脆放弃了。

    另一方面,基于C的PHP解释器从第一天起就被设计为在Apache中作为mod_PHP运行。事实上,在最初的几个版本中,甚至没有命令行版本的解释器,mod_php是最好的解释器 只有 运行PHP的方法。

    Phusion Passenger (aka mod_rack aka mod_rails) WSGI (Python Web框架的标准接口), Rack (RubyWeb框架的标准接口)和对RubyonRails的直接支持。

    我的希望就在这里 mod_rubinius Rubinius 从一开始就被设计为线程安全、可嵌入、无全局状态、不使用C堆栈等。它被设计成能够在一个Rubinius进程内运行多个Rubinius VM。这使得mod_rubinius比mod_ruby更易于实现和维护。当然,不幸的是,Rubinius尚未发布,在Rubinius发布之前,mod_Rubinius的真正工作甚至无法开始。好消息是,mod_rubinius已经拥有了比mod_ruby更多的人力支持,因为它已经向一家Rails托管公司支付了开发人员的费用,该公司的 他想自己使用它。

        3
  •  5
  •   Nate    16 年前

    也许有必要再次澄清mislav的观点,即mod_rails实际上并不局限于rails代码。新名称mod_rack更好。非常小的应用程序可以进行跟踪,例如:

    class HelloWorld
      def call(env)
        [200, {"Content-Type" => "text/plain"}, ["Hello world!"]]
      end
    end
    
        4
  •  4
  •   AShelly    16 年前

    有一个: mod_ruby ,但已经有2年没有维护了。

        5
  •  0
  •   Honza    16 年前

    mod_rails 它可以运行 Rack