ruby-on-rails – 从耙机任务中的控制台/命令提示符接受用户输入

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 从耙机任务中的控制台/命令提示符接受用户输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为Rails编写一个自定义的rake任务,并且有一点是程序总结了它将要做什么,然后询问用户是否要做的是正确的.
puts "\n Is this what you want to happen? [Y/N]"
answer = gets.chomp

if answer == "Y"
    # commits
else if answer == "N"
    return false #(Aborts the rake task)
end

但是,这个代码会使耙子过早中止;

rake aborted!
No such file or directory - populate

“填充”是耙子任务的名称.

我认为在.gets方法中真的导致了这个错误.

我不知道.gets方法如何显式地工作,但是我猜测它必须自动用户输入发送回脚本写入的文件,并且由于某种原因,它会变得困惑,并且认为耙子的名称任务是文件名称.由于populate.rake不存在,我认为这就是为什么会抛出错误.

但是,我不知道如何解决这个错误.耙子是否为.gets提供了一种替代方法

解决方法

Rake任务存储在Rails应用程序的lib / tasks文件夹中.耙子任务的文件应以.rake扩展名结尾;例如:populate.rake.

接受输入是使用STDIN.gets.chomp而不是gets.chomp完成的.

namespace :db do
  desc "Prints the migrated versions"
  task :populate => :environment do
    puts "\n Is this what you want to happen? [Y/N]"
    answer = STDIN.gets.chomp
    puts answer
    if answer == "Y"
      # your code here
    elsif answer == "N"
      return false # Abort the rake task
    end
  end
end

您可以使用以下命令运行此rake任务:rake db:populate

猜你在找的Ruby相关文章