Sinatra Sinatra 做的两个小应用

phperyang · 2013年01月17日 · 最后由 phperyang 回复于 2013年01月17日 · 3893 次阅读

百度新闻导航:http://74.82.175.214:4568/ 网址导航:http://74.82.175.214:4569/

Sinatra 开发还是挺快的

目前是在我的 VPS 上直接 ruby -rubygems index.rb -p 4568 & 直接启动的。。可以安装一下 thin 服务器

楼主,点链接 5678 的端口跳不过去啊?

#2 楼 @fresh_fish 可以了。。程序里面端口错了

可供参观 source code 吗

#1 楼 @phperyang 访问很慢啊,我看抓包后面很多掉包的情况

#5 楼 @alucardpj 嗯。VPS 在国外。。。

很简单了。。。 就是一个 model 数据层文件夹 views 模板文件夹 index.rb 主页

index.rb: #Ruby Sinatra #author [email protected] #gem install will_paginate =begin ./hi.rb Controller ./model/y.rb Model ./views/index.erb Views =end

require 'sinatra' require 'will_paginate' require 'will_paginate/active_record' require File.join(File.dirname(FILE),'model/y.rb') #数据层 #首页 get '/' do erb :index end #各类别的 get '/imop' do @key = params['name'] unless @key.blank? #"Hello #{params['name']}!" #params['username'] params[:username] @p = Yang.where("t=?", @key).paginate(:page => params[:page],:per_page => 20).order('id DESC') #@p = Yang.find_by_sql("select * from yangs where type='#{@key}'") end erb :imop end

post '/add' do @title = params['title'] @t = params['t'] @author = params['author'] @url = params['url'] ttt = @title.empty? uuu = @url.empty? if ttt != true res = Yang.create(:title => @title ,:t => @t ,:author => @author,:url => @url) if res "#{@title} #{@t} #{@authore} #{@url}" redirect back end else "资料不能为空哈." end

end

views: index.erb: 就是个 form 表单

#4 楼 @loveky 比较简单。。呵呵。。就是一个 form 表单提交到 mysql erb 展示

百度新闻那个你是采集没有入库吧?读数据库这么慢那我真要吐血了。

#9 楼 @metal 没有啊。跳转的啊

#10 楼 @phperyang require 'hpricot doc = Hpricot::XML(xml) (doc/:channel/:item).each do | url | title = Iconv.conv("utf8","GBK",(url/:title).text) link = Iconv.conv("utf8","GBK",(url/:link).text) newlink = "http://74.82.175.214:4568/jump?url=#link}{" pubDate = Iconv.conv("utf8","GBK",(url/:pubDate).text) source = Iconv.conv("utf8","GBK",(url/:source).text) author = Iconv.conv("utf8","GBK",(url/:author).text) strs = "[#{v}]标题:#{title} 发布时间:#{pubDate} 来源:#{source} " @yang.unshift(strs) end

读取的 XML

#11 楼 @phperyang 你可以去了解一下 Rack::Cache 这个 gem

#12 楼 @metal 好的。做个 cache。呵呵。国外的读取 XML 慢

目测慢的原因在于代码太挫...

#14 楼 @luikore 呵呵。。。嗯。。木有什么经验。。ruby 菜鸟

需要 登录 后方可回复, 如果你还没有账号请 注册新账号