82
votes

I get an error whenever I try to use the function gets within a rake task. Is there a way to make it work?

The error says, "no such file or directory - (rake task name)"

2
The error message seems pretty self explanatory... - Mitch Wheat
It might seem so, but it's not. See my answer below. There is quite a bit of confusion about the difference between Kernel#gets and STDIN.gets. - James A. Rosen

2 Answers

163
votes

The problem is that Kernel#gets (which is what you're calling if you just use gets by itself) assumes you're pulling from a file named by the arguments passed to Rake. That means gets tries to return the content of a file called [rake-task-here], which almost certainly doesn't exist.

Try STDIN.gets.

-4
votes

I don't think that you should be using gets in a rake task, if you need to get input from the command line you probably should pass it in as a parameter, but if you post some code that is not working then I am sure you will get a better answer.