Rails runner脚本不起作用

Zin*_*inc 3 ruby ruby-on-rails ruby-on-rails-3

任何想法为什么这不起作用,我得到一个NoMethodError当我尝试运行下面的代码通过rails runner.

也许我正在调用rails runner,对Rails来说不好意思!

文件位置:

/app/scripts/data_import.rb
Run Code Online (Sandbox Code Playgroud)

命令:

rails runner -e development DataImport.say_hi
Run Code Online (Sandbox Code Playgroud)

错误:

undefined method `say_hi' for DataImport:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

码:

class DataImport

  def say_hi
    puts "hi"
  end

end
Run Code Online (Sandbox Code Playgroud)

Pan*_*kos 12

您正在调用类的实例方法,因此它未定义.尝试将您的方法改为类方法:

class DataImport
  def self.say_hi
    puts "hi"
  end
end
Run Code Online (Sandbox Code Playgroud)


And*_*all 5

将其更改为

class DataImport
  def self.say_hi
    puts "hi"
  end
end
Run Code Online (Sandbox Code Playgroud)

由于您将其作为类方法而不是类的实例上的方法进行访问,因此您需要self将该方法声明为类方法.