Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby on rails - Static method

People also ask

Are there static methods in Ruby?

Methods may be public, private, or protected, but there is no concept of a static method or variable in Ruby. Ruby doesn't have a static keyword that denotes that a particular method belongs to the class level.

Can a spring component have static methods?

Yes, A spring bean may have static methods too.

What is method static?

A static method (or static function) is a method defined as a member of an object but is accessible directly from an API object's constructor, rather than from an object instance created via the constructor.

Which methods are static methods?

Static methods are the methods in Java that can be called without creating an object of class. They are referenced by the class name itself or reference to the Object of that class.


To declare a static method, write ...

def self.checkPings
  # A static method
end

... or ...

class Myclass extend self

  def checkPings
    # Its static method
  end

end

You can use static methods in Ruby like this:

class MyModel
    def self.do_something
        puts "this is a static method"
    end
end
MyModel.do_something  # => "this is a static method"
MyModel::do_something # => "this is a static method"

Also notice that you're using a wrong naming convention for your method. It should be check_pings instead, but this does not affect if your code works or not, it's just the ruby-style.


Change your code from

class MyModel
  def checkPings
  end
end

to

class MyModel
  def self.checkPings
  end
end

Note there is self added to the method name.

def checkPings is an instance method for the class MyModel whereas def self.checkPings is a class method.


Instead of extending self for the whole class, you can create a block that extends from self and define your static methods inside.

you would do something like this :

class << self
#define static methods here
end

So in your example, you would do something like this :

class Ping
  class << self
    def checkPings
      #do you ping code here
      # checkPings is a static method
    end
  end
end

and you can call it as follows : Ping.checkPings


There are some ways to declare a static method in RoR.

#1

class YourClassName
  class << self
    def your_static_method (params)
      # Your code here
    end
  end
end

#2

class YourClassName
  def self.your_status_method
    // Your code here
  end
end