环境:Ruby 1.9.2
我是Ruby / Sinatra的新手,正在创建一个概念验证Web应用程序。目的很简单:用户输入域列表,脚本首先检查其mx记录,如果满足条件,则提取域联系信息。我很确定我不会正确地存储数据,并且正在寻找一种更优雅的解决方案,这使我能够对结果进行样式化,以便将域,电子邮件和名称组合在一起。
#!/usr/bin/env ruby
require "sinatra/base"
require 'rubygems'
require 'haml'
require 'sinatra'
require 'whois'
get '/' do
haml :index
end
post '/' do
@host = params[:host]
@host.split('\n')
@email = Array.new
@name = Array.new
@domain = Array.new
@host.each_line {|i|
if %x[dig -t mx #{i.chomp.gsub('www.', '')} | grep -i mx | grep -i google].empty?
puts "empty"
else
@domain << i.chomp.gsub('www.','')
@email << (Whois.whois(i.chomp.gsub('www.',''))).technical_contact.email
@name << (Whois.whois(i.chomp.gsub('www.',''))).technical_contact.name
end
}
haml :index
end
__END__
@@ layout
%html
%head
%title Gcrawl
%body
#header
%h1 Gcrawl
#content
=yield
%footer
@@ index
%p
Welcome to Gcrawl
%form(action='/' method='POST')
%textarea{:rows => '12', :cols => '40', :name => 'host'}
%input(type='submit')
- if defined?(@email)
%h3= @domain
%h3= @email
%h3= @name
答案 0 :(得分:0)
创建一个类Record
,其中包含特定条目的@ name,@ domain和@email。
因此,Record
的每个实例都有自己的名称,域名和电子邮件。
用Class替换数组实现。如果需要将记录存储在数据库中,请使用ActiveRecord
。
你开始使用Sinatra是件好事,但是如果你赶时间,你可以在一小时内让你的应用在Rails上运行。
修改强> Rails入门教程/指南: