Php 使用ruby制作网页而不使用rails

Php 使用ruby制作网页而不使用rails,php,ruby-on-rails,ruby,Php,Ruby On Rails,Ruby,我正在寻找一种不用rails编写简单ruby代码的方法。我来自PHP世界,有时,我只是用Mysql连接构建一个页面,运行一个查询并在一个简单的表中显示结果,例如,一个简单的日志或报告。 例如: 这只是一个简单的例子,但反映了我需要用ruby做什么。我不希望所有rails框架都像这样做。如何用简单的ruby代码实现这一点?简单的答案是。或者 然而,稍微长一点的答案是Ruby没有遵循与PHP相同的执行模型,因此web服务器在每次请求时插入文件中的一些代码的开发模型没有得到很好的支持。这应该可以完成以

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

这只是一个简单的例子,但反映了我需要用ruby做什么。我不希望所有rails框架都像这样做。如何用简单的ruby代码实现这一点?

简单的答案是。或者


然而,稍微长一点的答案是Ruby没有遵循与PHP相同的执行模型,因此web服务器在每次请求时插入文件中的一些代码的开发模型没有得到很好的支持。

这应该可以完成以下工作:

require 'rubygems'
gem 'activerecord'; require 'active_record'

class User < ActiveRecord::Base

end

ActiveRecord::Base.establish_connection(
  :adapter => 'mysql',
  :database => 'test',
  :user => 'user',
  :password => 'pass'
)

User.all.each do |u|
  puts "<p>#{u.name} - #{u.age}</p>"
end

首先,Ruby不像php。不要将文件拖放到公共html中,并期望一切正常

无论如何,这样做是有可能的。所以我们使用的Mysql适配器没有ORM,就像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>"}
这将在控制台中输出记录。如果希望浏览器输出,则必须编写一个小型服务器:

#!/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上使用它。

我知道的最简单的方法是使用Ruby的CGI模块,并以CGI的形式运行脚本。根据您的性能要求和要生成的页面的复杂性,类似这样的操作可能会奏效:

#!/usr/bin/ruby
require 'cgi'
require 'mysql'

con = Mysql.new("localhost","user","pass","mydb")
rs = con.query('select * from users')

cgi = CGI.new('html4')
cgi.out {
  cgi.html {
    cgi.body {
      rs.each_hash { |row| puts #{"row['name']} - #{row['age']}" }
    }
  }
}

<>你想考虑在每个请求上建立连接到MySQL的开销,对于复杂的页面,你需要一个模板机制。< / P>请治愈我和其他人的强迫症;您忘了在localhost后面加上双引号。@Zirak,您可以编辑其他人的问题来解决类似问题。@rizidoro也许您应该说明您的限制条件,例如,听起来您想使用Passenger,所以您应该提前提一下。这有助于人们给出更接近您想要的答案。没有Rails就没有框架!尽管如此,只要WEBrick,您就可以走很长的路:
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
#!/usr/bin/ruby
require 'cgi'
require 'mysql'

con = Mysql.new("localhost","user","pass","mydb")
rs = con.query('select * from users')

cgi = CGI.new('html4')
cgi.out {
  cgi.html {
    cgi.body {
      rs.each_hash { |row| puts #{"row['name']} - #{row['age']}" }
    }
  }
}