制作一个没有铁轨的红宝石网页

riz*_*oro 15 php ruby ruby-on-rails

我正在寻找一种没有rails的简单ruby代码的方法.我来自PHP世界,有时,我只是构建一个带有Mysql连接的页面,运行查询并在简单的表中显示结果(例如,简单的日志或报告).例:

<?php
$con = mysql_connect("localhost","user","pass");
mysql_select_db("mydb");

$query = mysql_query("SELECT * FROM users");

while($data = mysql_fetch_assoc($query) {
   echo "<p> $data[name] - $data[age] </p>";
}
?>
Run Code Online (Sandbox Code Playgroud)

这只是一个简单的例子,但反映了我需要用ruby做的事情.我不希望所有的rails框架只是做这样的事情.如何使用简单的ruby代码实现这一目标?

Kru*_*ule 13

首先,Ruby不像php.没有将文件拖放到public_html中并希望一切正常.

从来没有,有可能这样做,有点.因此我们默认使用没有ORM的Mysql适配器.

在开始之前,您将需要mysql适配器,因此请使用以下命令安装:

gem install mysql2
Run Code Online (Sandbox Code Playgroud)

比写像:

require "rubygems"
require "mysql2"

client = Mysql2::Client.new(
  :host => "127.0.0.1",
  :username => "root",
  :password => "",
  :database => "mydb"
)
records = client.query("SELECT * FROM users")

records.each {|r| p "<p>#{r['name']} - #{r['age']}</p>"}
Run Code Online (Sandbox Code Playgroud)

现在在控制台中运行它

ruby name_of_the _file.rb
Run Code Online (Sandbox Code Playgroud)

这将在控制台中输出记录.如果您想要浏览器输出,则必须编写一个小型服务器:

#!/usr/bin/ruby
require 'rubygems'
require 'socket'
require 'mysql2'

webserver = TCPServer.new('127.0.0.1', 6789)

client = Mysql2::Client.new(
  :host => "127.0.0.1",
  :username => "root",
  :password => "",
  :database => "mydb"
)

records = client.query("SELECT * FROM users")

while (session = webserver.accept)
   session.print "HTTP/1.1 200/OK\r\nContent-type:text/html\r\n\r\n"
   request = session.gets
   records.each {|r| session.print "<p>#{r['name']} - #{r['age']}</p>"}
   session.close
 end
Run Code Online (Sandbox Code Playgroud)

现在,当您这样做时ruby application.rb,服务器将在端口6789上启动,它将输出所需的数据.您可以稍后在其上反向代理并在端口80上使用它.


reg*_*fry 5

简单的答案是sinatra.或露营.

然而,稍微长一点的答案是Ruby不遵循与PHP相同的执行模型,因此"支持在每个请求上由Web服务器插入文件中的某些代码"的开发模型得不到支持.