运行.rb Ruby文件

时间:2012-01-27 20:07:04

标签: ruby apache

在网络浏览器中运行.rb文件需要什么?

(我在红宝石的第一天)

我有乘客的Apache服务器(我来自PHP)。终端证明:

gundars@linuxr528:~$ apache2ctl -t -D DUMP_MODULES
passenger_module (shared)

ruby​​ 1.9.3p0(2011-10-30修订版33570)[x86_64-linux]

我也安装了rails等,尝试使用rails制作一个快速的应用程序,它运行良好。

现在我想在浏览器中打开.rb文件,它会提示我保存它。 这就是它在我的浏览器中的样子,点击后弹出右侧的窗口,它会询问保存位置。 enter image description here

关于Ruby和这个文件的条目是:

apache2.conf:

LoadModule passenger_module /home/gundars/.rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/gundars/.rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11
PassengerRuby /home/gundars/.rvm/wrappers/ruby-1.9.3-p0/ruby

虚拟hosts.conf

<VirtualHost *:80>
   ServerName tictactoe.ruby.dev
   DocumentRoot "/localhost/sandbox/RUBY/tictactoe/"
   ErrorLog /var/log/rubyonrails2.log
</VirtualHost>

的/ etc /主机

127.0.0.1   tictactoe.ruby.dev

所以问题 - 在Web浏览器中运行.rb文件需要什么? 我认为这是乘客的目的......

3 个答案:

答案 0 :(得分:5)

要运行的步骤.rb来自APACHE的脚本:

编辑您的apache配置文件(例如/etc/httpd/conf/httpd.conf)。更新或创建AddHandler设置,使其包含“.rb”,例如:

AddHandler cgi-script .cgi .rb

创建ruby脚本(.rb)。确保你有一个shebang(#!)指向你的红宝石翻译。如果您不确定ruby在哪里,请使用“which”命令。

#!/bin/ruby
puts "Content-type: text/html"
puts
puts "<html>"
puts "<body>"
puts "<h3>Hello</h3>"

在.rb文件上设置正确的所有权和执行权限(x),以便apache可以执行它,例如:

-rwxr-x--- 1 apache apache 163 Nov 26 10:55 index.rb

这可能是你所要做的。如果您的脚本仍未执行,我将尝试的第一个故障排除步骤是暂时禁用SELinux(使用setenforce 0)。

答案 1 :(得分:1)

第一天?试试Sinatra教程。很容易快速掌握并运行,然后你可以集中精力学习语言。

答案 2 :(得分:0)

Ruby是一种服务器端语言。您需要的是一个进程拦截您的请求,将其路由到正确的Ruby文件,执行它,并将输出发送到您的浏览器。幸运的是,有人使用RackPassenger为您完成了此操作。

为什么你想要这样做而不是在Rails框架内工作是超出我的。