我正在寻找一种无需 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>";
}
?>
这只是一个简单的例子,但反射(reflect)了我需要用 ruby 做什么。我不希望所有 Rails 框架都做这样的事情。如何使用简单的 ruby 代码实现此目的?
最佳答案
首先,Ruby 不像 php。不要将文件放入 public_html 并期望一切正常。
不过,这样做还是有可能的,有点。所以我们使用没有 ORM 的 Mysql 适配器,就像 php 默认那样。
在开始之前,您将需要 mysql 适配器,因此安装它:
gem install mysql2
比起写这样的东西:
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>"}
现在在控制台中运行它
ruby name_of_the _file.rb
这将在控制台输出记录。如果你想要浏览器输出,你将不得不编写一个小型服务器:
#!/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
现在当您执行 ruby application.rb
时,服务器将在端口 6789 上启动并输出所需的数据。您稍后可以对其进行反向代理并在端口 80 上使用它。
关于php - 使用没有 rails 的 ruby 制作网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5664553/