Sinatra 20行代码实现查询CSDN+天涯用户资料
这次想做标题党,20行只包含Sinatra部分代码,html代码有58行,HTML真是臃肿呀。
很早就听说Sinatra写小网站很爽,一直没时间来折腾。
今天抽空再学现用,发现Sinatra上手真的很快,直接找个示例一看就懂,以后小东西就没必要用Rails了。
功能很简单:提供一个输入框供用户输入关键字(key),用户点查询时搜索数据库,查出csdn和天涯数据库中用户名或email与key匹配的记录,并返回结果。
文件目录
|–app.rb
|–model.rb
|–views
|–index.erb
1、使用active_record访问数据库
Active Record可以独立于Rails使用,之前有过介绍,这次也用它来访问mysql。
#model.rb require 'active_record' ActiveRecord::Base.establish_connection(adapter: "mysql2", encode: "utf8", host: "localhost", username: "root", password: "***", database: "***") #Csdn类会自动对应csdns表 class Csdn < ActiveRecord::Base end #Tianya类会自动对应tianyas表 class Tianya < ActiveRecord::Base end
2、Sinatra部分代码
#app.rb require 'sinatra' require File.join(File.dirname(__FILE__),'model') # get "/"接收对根目录的get请求 get "/" do #可以接收请求中的参数 @key = params[:key] #如果参数来为空,说明是查询请求 unless @key.blank? @csdns = Csdn.where("email=? or username=?", @key, @key ) @tianyas = Tianya.where("email=? or username=?", @key, @key ) end #Sinatra可以渲染erb模板 erb :index end
Sinatra可以渲染erb模板,也支持haml模板,图方便就用了erb。用实例变量(@开头)是因为它可以在erb中直接被访问。
所有模板都是放到views目录下。
3、index.erb代码如下
html代码真臭!
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>Your missing hack tool</title> </head> <body> <h1>Your missing hack tool(CSDN + Tianya)</h3> <form action="/" method="get"> search for: <input type="text" name="key" value="<%= @key if @key %>"> <input type="submit" value="submit"> </form> <% if @key %> <div id="result"> <div id="csdn"> <% unless @csdns.blank? %> <h3>Csdn results: </h3> <table> <tr> <td>name</td> <td>email</td> <td>pwd</td> </tr> <% @csdns.each do |entry| %> <tr> <td><%= entry.username %></td> <td><%= entry.email %></td> <td><%= entry.password %></td> </tr> <% end %> </table> <% end %> </div> <div id="tianya"> <% unless @tianyas.blank? %> <h3>Tianya results: </h3> <table> <tr> <td>name</td> <td>email</td> <td>pwd</td> </tr> <% @tianyas.each do |entry| %> <tr> <td><%= entry.username %></td> <td><%= entry.email %></td> <td><%= entry.password %></td> </tr> <% end %> </table> <% end %> </div> </div> <% end %> </body> </html>
4、启动
ruby app.rb
默认使用WEBrick作为服务器,4567端口。
ruby app.rb -p 3000可以指定启动端口。
现在可以直接访问http://127.0.0.1:4567/使用了。
本来想把这个程序发布出来供大家使用,但由于服务器硬盘太小,数据库纯数据有1.5G,再建个索引要近3G,所以就只分享下代码。
Ruby真的是越玩越舒服了哈~
haml较好啦…
臭是因为一个档案放全部内容吧…