Ruby 使用sinatra存储和输出格式化的数组内容

Ruby 使用sinatra存储和输出格式化的数组内容,ruby,sinatra,Ruby,Sinatra,环境:Ruby 1.9.2 我是Ruby/Sinatra新手,正在创建一个概念验证web应用程序。其目的相当简单:用户输入域列表,脚本首先检查它们的mx记录,如果它们满足条件,则提取域联系信息。我确信我不会适当地存储数据,我正在寻找一个更优雅的解决方案,使我能够对结果进行样式化,以便将域、电子邮件和名称分组在一起 #!/usr/bin/env ruby require "sinatra/base" require 'rubygems' require 'haml' require 'sinatr

环境: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
#/usr/bin/env ruby
需要“西纳特拉/基地”
需要“rubygems”
需要“haml”
需要“sinatra”
需要“谁”
获取“/”do
haml:索引
结束
发布“/”do
@主机=参数[:主机]
@host.split(“\n”)
@email=Array.new
@name=Array.new
@domain=Array.new
@host.each_line{i|
如果%x[dig-tmx{i.chomp.gsub('www.,'')}grep-imx | grep-i google]。为空?
放“空”
其他的
@域“主机”}
%输入(type='submit')
-如果已定义?(@email)
%h3=@域
%h3=@电子邮件
%h3=@name

创建一个类
记录
,其中包含特定条目的@name、@domain和@email。
因此,
Record
的每个实例都有自己的名称、域和电子邮件

用类替换数组实现。如果需要将记录存储在数据库中,请使用
ActiveRecord

从Sinatra开始很好,但是如果你很匆忙,你可以在一小时内让你的应用程序在Rails上运行

编辑 Rails入门教程/指南: