2012-02-03 78 views
0

環境:Ruby 1.9.2存儲和輸出帶有sinatra的格式化數組內容

我是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

創建一個類Record其中將包含@name,@domain和@email特定條目。
因此,Record的每個實例都將擁有自己的名稱,域名和電子郵件地址。

用一個Class替換數組實現。如果您需要將記錄存儲在數據庫中,請使用ActiveRecord

從Sinatra開始,這很好,但如果你很匆忙,你可以在一個小時內讓你的應用程序在Rails上運行。

編輯 教程/指南入門使用Rails:

+0

你有可能指向我往這樣的例子? – 2012-02-03 13:20:26