如何在任何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 Page Hello 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解释器。
从您的应用根运行此操作。
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.