如何在任何Web服务器(Apache或Mongrel或其他任何东西)中运行简单的ruby脚本

对我来说,当我搜索相关的ruby时,所有ruby都会在轨道相关的结果中弹出,这似乎很有趣。 所以没有人再使用原始ruby?

但是,我是ruby的新手。 今天早上我只想在web服务器上运行一个简单的hello world ruby​​脚本,首先是apache 2,然后尝试了mongrel。 但不幸的是我失败了。 我用各种方式谷歌搜索,但结果只显示有关铁轨上的ruby。 所以真的有办法在任何Web服务器上运行ruby脚本,或者即使我只想做一个hello world应用程序,我也必须使用ror?

Sinatra可能是您从没有Rails的Web服务器运行Ruby脚本的最佳选择。

看看这里: http : //www.sinatrarb.com

来自Sinatra文档:

require 'sinatra' get '/hi' do "Hello World!" end 

然后,运行:

 $ gem install sinatra $ ruby -rubygems hi.rb == Sinatra has taken the stage ... >> Listening on 0.0.0.0:4567 

只需在浏览器中访问http://0.0.0.0:4567即可找到“Hello World”

除此之外,由于您还询问有关在Apache或其他Web服务器中运行的问题,您可能需要查看有关将基于Sinatra的新应用程序部署到Apache或Nginx的这些教程:

Apache: http : //www.pastbedti.me/2009/11/deploying-a-sinatra-app-with-apache-and-phusion-passenger-aka-mod_rack/和http://www.giantflyingsaucer.com/blog / p = 1716

Nginx: http : //tommy.chheng.com/2009/06/09/deploying-a-sinatra-app-on-nginx-passenger-with-capistrano-and-git/

请注意这两个教程都涵盖了通过Passenger运行Sinatra( http://www.modrails.com/ – 不要被“modrails”名称:)推迟),我在Apache下部署应用程序时运气不错Nginx的。

你可以配置Apache(例如)将.rb文件作为CGI脚本运行,然后在顶部添加一个shebang行( #!/path/to/your/ruby或者#!/usr/bin/env ruby )剧本。 但是,这并不是最佳选择,因为它会为每个请求启动一个新的解释器。

更常用的运行ruby网站的方式是乘客: http : //www.modrails.com/安装和使用并不是很难,这里是apache的文档: http : //www.modrails.com /documentation/Users%20guide%20Apache.html#_deploying_a_ruby_on_rails_application

您的应用程序必须是有效的机架应用程序,这是一个最小的hello世界(假设/ app是您的应用程序的根文件夹):

/app/config.ru

 require 'rack' require 'app' run(app) 

/app/app.rb

 app = proc do |env| [ # http status code 200, # headers {'Content-Type' => 'text/html'}, # html body ["Test PageHello World !"] ] end 

保存上面的文件并创建一个子文件夹/ app / public(乘客需要检测ruby / rails / sinatra应用程序)并在apache配置中使用/ app / public作为DocumentRoot。

这可能看起来很可怕,但这是用于生产部署,在开发中你真的不想弄乱真正的服务器。

你需要运行我上面给出的config.ru文件所需要的是:

 $ gem install rack $ rackup config.ru 

或者,如果您想更接近生产系统:

 $ gem install passenger $ cd /app $ passenger start 

这将安装一个带乘客的nginx服务器并运行您的应用程序。

在大多数情况下,你永远不会直接使用机架,而是在rails,sinatra或其他框架上使用ruby为你生成html(他们现在都使用下面的机架来为web服务器提供一个通用的api)。

Ruby 1.9.2+简单命令。

 ruby -run -e httpd . -p 5000 

来自这篇文章http://til.justincampbell.me/start-an-http-server-with-ruby-run/其他文章https://gist.github.com/willurd/5720255

我听说mod_ruby很好。 与#!/path/to/your/ruby ,mod_ruby不会生成新的ruby解释器。

https://github.com/shugo/mod_ruby

从您的应用根运行此操作。

 ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start" 
 #!/usr/bin/env ruby //shebang line to indicate path to ruby. require 'cgi' //cgi file to create a simple cgi object. cgi = CGI.new //instantiating a cgi object. puts cgi.header //thats telling the server about the type(html). puts "hello" // thats the output on the browser.