Rails + Resque:更新后错误不会消失

时间:2017-08-23 13:02:16

标签: ruby-on-rails heroku redis resque

我有一个由Resque运行的后台作业,我的过程正确开始,但后来我看到了错误:

Error
undefined method `path' for #<Hash:0x007f1900c25298>
/app/app/models/weigh_in.rb:373:in `import_without_check'
/app/app/jobs/uploads.rb:8:in `perform'

并且最初这是一个错误,但我已经更新了我的文件并完全删除了这一行,推送到了heroku,重新启动了heroku以及redis,但仍然存在错误。

这里是app/models/weigh_in中调用的函数:

def self.import_without_check(file, location_id) 

    error = []
    success = []

    options = {:key_mapping => @new_hash, :strings_as_keys => true, :keep_original_headers => true, :remove_unmapped_keys => true}

    SmarterCSV.process(file, options) do |row|

        hashed_row = row[0]
        next if hashed_row[:scale_id].blank? || hashed_row[:scale_id].nil?
        hashed_row[:unique_scale] = location_id + hashed_row[:scale_id].to_s
        hashed_row = hashed_row.to_hash.except!(nil).as_json
        p hashed_row

        client = Client.select('id', 'name').find_by(unique_scale: hashed_row['unique_scale']) || Client.select('id', 'name').find_by(unique_mb: hashed_row['unique_scale'])

        if client.nil?
            error << hashed_row
            next
        end

        hashed_row['client_id'] = client.id
        program_id = client.programs.last.id

        if program_id.nil? || hashed_row['client_id'].nil?
            error << hashed_row
            next
        end

        check_in = CheckIn.new(client_id: client.id, type_of_weighin: 'Standard', program_id: program_id)

        unless hashed_row['date'].blank? || hashed_row['date'].nil?
            p 'date', hashed_row['date']
            hashed_row['date'] = Date.strptime(hashed_row["date"], "%m/%d/%y").strftime()
        end

        hashed_row.except!("unique_scale")

        if check_in.save
            hashed_row['check_in_id'] = check_in.id
        end

        if hashed_row['check_in_id'].nil?
            error << hashed_row
            next
        end

        weigh_in = WeighIn.new(hashed_row)
        p weigh_in.valid?, weigh_in.errors.full_messages, weigh_in.errors

        if weigh_in.save
            success << hashed_row
        end

    end

    return success, error
end 

我是否需要采取措施才能消除此错误?

1 个答案:

答案 0 :(得分:0)

我通过它的cli连接到redis Heroku附加组件,然后获取其客户端,终止所有连接,并重新启动我的heroku dynos,解决了这个问题。完成后,记录了我的更改:

$ heroku redis:cli
21579> client list                     # Returns clients
21579> client kill 10.159.107.79:43434 # use number from addr property returned with client list command
21579> quit                            # Exit cli
$ heroku restart

我希望这有助于其他人