php - 使用没有 rails 的 ruby​​ 制作网页

标签 php ruby-on-rails ruby

我正在寻找一种无需 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/

相关文章:

javascript - Rails + Javascript + 未捕获的类型错误 : Object #<Object> has no method

ruby-on-rails - 如何将临时文件编写为二进制文件

ruby-on-rails - Ruby:如何在 YAML 中定义日期时间字段?

ruby-on-rails - 在 El Capitan 上安装 Nokogiri (1.6.7) 时出错

ruby - 在 Ruby 中读取一个文本文件并写入另一个文本文件

php - 如何将用户添加到 Facebook 自定义受众

PHP 将多张表中的数据导出到 CSV

php - 计算有特价的天数

php - fatal error :未捕获的异常 'Zend_Session_Exception' 带有消息“Zend_Session::start()”

javascript - Rails 4 datetimepicker 和 cocoon gem