Ask net-ping


#1

hi,

can anybody help me?
i wanna create a RoR monitoring application for my project.
i have a database with table named nodes
in that nodes i have id and ipadd.

here’s my code:
#nodes_controller.rb

require ‘net/ping’
include Net

class NodesController < ApplicationController
def index
@nodes = Node.find(:all)

@arr_stat = Array.new
i = 0
for node in @nodes do

  stat = PingExternal.new(node.ipadd)

  @arr_stat[i]['ipadd'] = node.ipadd
  if stat
    @arr_stat[i]['status'] = 'online';
    puts "online"
  else
    @arr_stat[i]['status'] = 'offline';
    puts "offline"
  end
end

respond_to do |format|
  format.html { render :html => @arr_stat }# index.html.erb
  format.xml  { render :xml => @nodes }
end

end
##########################

why when i run the code it always says:

You have a nil object when you didn’t expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]=

please help me solved this.


#2

Your array is a simple array, but you’re referencing it like its an
array of hashes.

Also you’re using I like an incrementor, but you never increment it.
Its not very ruby-like.

Try this:

@arr_stat = Node.all.map do |node|
{:ipadd => node.ipadd, :status =>
PingExternal.new(node.ipadd) ? “online” : “offline”}
end

However, depending on what you want to do with this data later, this
may be a bad implentation.

Blog: http://random8.zenunit.com/
Learn rails: http://sensei.zenunit.com/

On 02/04/2009, at 12:18 PM, Junior Junior wangsa
<removed_email_address@domain.invalid


#3

Thanks Julian

i already try it…
and it works…

how i call and show the data in my html.erb??

can u show me how??