2013-09-30 11 views
14

Rails için özel bir komisyon görevi yazıyorum ve programın ne yapacağını özetlediği bir nokta var ve sonra ne istediğini sorar. yapılacaklar doğrudur. Ancak, bu kod, tırmığın zamanından önce durdurulmasına neden olur;Bir komisyon görevi içinde konsol/komut isteminden kullanıcı girdisini kabul etme

rake aborted! 
No such file or directory - populate 

"doldurmak" tırmık görevin adıdır.

Bu hataya neden olan gerçekten bu hataya neden .gets yöntemidir.

.gets yönteminin nasıl çalıştığını bilmiyorum ama sanırım otomatik olarak kullanıcı girdisini, komut dosyasının yazıldığı dosyaya geri göndermesi gerekiyor ve bunun bir nedeni şaşkına dönüyor. Komisyon görevinin isminin dosyanın adı olduğunu düşünür. populate.rake bulunamadı, sanırım bu yüzden hata atılıyor.

Ancak, bu hatayı nasıl aşabileceğimi bilmiyorum. rake, .gets için alternatif bir yöntem sunuyor mu?

+0

http://stackoverflow.com/questions/5427839/is-it-possible-to-make-an-interactive-rake-task – tihom

cevap

21

Kurtarma görevleri, Rails uygulamasının lib/tasks klasöründe saklanır. Komisyon görevinin dosyası, .rake uzantısıyla bitmelidir; örneğin: populate.rake.

Girdiyi kabul etmek gets.chomp yerine STDIN.gets.chomp ile yapılır. Evet rake db:populate

+0

:

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 

Sen bu tırmık görevi çalıştırabilirsiniz , (.rb, üzgünüm, otomatik yazarak: P) ile biter ve bu lib/görevler – Starkers

+0

Evet, benim betiğimiz tam olarak bu gibi – Starkers

+0

oko hangi hata alırsınız –

İlgili konular