Ruby on rails - Static method

后端 未结 6 487
青春惊慌失措
青春惊慌失措 2020-12-09 07:31

I want a method to be executed every 5 minutes, I implemented whenever for ruby (cron). But it does not work. I think my method is not accessible. The method I want to exec

相关标签:
6条回答
  • 2020-12-09 07:42

    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
    
    0 讨论(0)
  • 2020-12-09 07:56

    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

    0 讨论(0)
  • 2020-12-09 08:03

    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.

    0 讨论(0)
  • 2020-12-09 08:03

    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
    
    0 讨论(0)
  • 2020-12-09 08:05

    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.

    0 讨论(0)
  • 2020-12-09 08:06

    You cannot have static methods in Ruby. In Ruby, all methods are dynamic. There is only one kind of method in Ruby: dynamic instance methods.

    Really, the term static method is a misnomer anyway. A static method is a method which is not associated with any object and which is not dispatched dynamically (hence "static"), but those two are pretty much the definition of what it means to be a "method". We already have a perfectly good name for this construct: a procedure.

    0 讨论(0)
提交回复
热议问题