2016-01-23 5 views
0

Я пытался реализовать прогресс бар для задачи граблей, я захватить код прогресс бар, используя веб-сайтрубин класс ArgumentError: неверное число аргументов (1 для 0)

https://coderwall.com/p/ijr6jq/rake-progress-bar

progress_bar. гь

class ProgressBar 

    def initialize(total) 
    @total = total 
    @counter = 1 
    end 

    def increment 
    complete = sprintf("%#.2f%", ((@counter.to_f/@total.to_f) * 100)) 
    print "\r\e[0K#{@counter}/#{@total} (#{complete})" 
    @counter += 1 
    end 

end 

progress_bar_test.rake

namespace :progress_bar_test do 

    desc "Testing progress bar" 

    task :start => :environment do 
     items = (1..1000).to_a 
     progress_bar = ProgressBar.new(items.size) 
     items.each do |item| 
     item.to_s ## Call a real method here, example: `item.update(foo: 'bar')` 
     progress_bar.increment 
     end 
    end 
end 

Wh ен я запустить задачу грабли я получил следующую ошибку

ArgumentError: wrong number of arguments (1 for 0) 

Полное сообщение об ошибке

rake aborted! 
ArgumentError: wrong number of arguments (1 for 0) 
/home/user/rails_app/lib/tasks/progress_bar_test.rake:8:in `initialize' 
/home/user/rails_app/lib/tasks/progress_bar_test.rake:8:in `new' 
/home/user/rails_app/lib/tasks/progress_bar_test.rake:8:in `block (2 levels) in <top (required)>' 
Tasks: TOP => progress_bar_test:start 
(See full trace by running task with --trace) 

But when i initialize the same class in IRB i did not face any problem

Любая помощь будет оценена, спасибо заранее

+0

Не можете опубликовать больше сообщением об ошибке? – phoenix

+0

@phoenix обновил вопрос с полным сообщением об ошибке –

ответ

1

Вы, вероятно, имеют progress_bar или ruby-progressbar gem установлен на вашей системе.

Когда вы делаете require 'progress_bar', это загружает драгоценный камень, а не ваш местный класс. Вы можете попробовать сделать require_relative 'progress_bar' или переименовать свой класс (и/или его имя), чтобы он загружал ваш локальный файл вместо драгоценного камня.

+0

Вероятно, в вашей системе установлен ['progress_bar' gem] (https://github.com/paul/progress_bar). Когда вы выполняете 'require 'progress_bar'', он загружает драгоценный камень, а не ваш локальный класс. Вы можете попробовать выполнить «require_relative» progress_bar'' или переименовать свой класс (и/или его имя файла), чтобы он загружал ваш локальный файл вместо драгоценного камня. –

+0

Ruy Diaz, у вас есть орел глаз LOL, да, действительно, я установил жемчужину Ruby-progressbar, этот камень имеет класс ProgressBar, вот и проблема, о человеке, которого вы спасли в день, спасибо –