小编Dic*_*Boy的帖子

Google Chrome遵循开发者控制台记录

console.log在我的javascript中使用很多来调试鼠标移动事件.我遇到的问题是,当在chrome控制台中时,不会遵循新条目.

在这些屏幕截图中最好地说明了:

第一批日志很好,因为它足够大,可以在屏幕上看到所有日志:

在此输入图像描述

几秒钟后: 在此输入图像描述

日志已超过需要我滚动的窗口大小.

这使调试鼠标移动事件非常困难,因为我必须移动到控制台并向下滚动,从而向日志添加更多条目.

所以我的问题是:如何让chrome基本上拖尾日志而不是停止并要求我滚动.

console logging google-chrome

12
推荐指数
1
解决办法
2832
查看次数

使用vcr存根ViewPoint gem返回取消授权来自ews API的响应

我正在查看通过ViewPoint gem的所有请求.使用vcr gem.

require 'spec_helper'
require 'vcr'

describe CalendarImporters::Ews::Get do
  let(:conf_connection) { FactoryGirl.create(:conf_connection)}
  let(:calendar) { create(:calendar, :for_ews) }
  let(:connection) { Connections::Ews.new(conf_connection, calendar.ews_email) }

  it "works" do
    VCR.use_cassette("a/cassette") do
      connection.client.get_folder(:calendar)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

connection.client返回一个新ViewPoint连接.

我从gem返回的响应是:Viewpoint::EWS::Errors::UnauthorizedResponseError这相当于来自ews api的401未授权代码.

我发现了这个问题:https://github.com/vcr/vcr/issues/297

这是我遇到的完全相同的问题,但它已经3年了,没有解决方案.我所有的其他谷歌foo都没有发现.

深入研究视点宝石,我发现请求对象除了:HTTPClientWebMockHTTPClient预期之外没有任何区别.

rspec ruby-on-rails exchangewebservices vcr viewpoint

11
推荐指数
1
解决办法
247
查看次数

Ruby on Rails + Sidekiq:如何更改预定的作业开始时间?

我最近开始与Sidekiq合作,并注意到它有一个很棒的功能,我已经搜索了很长时间:

UserMailer.delay_until(5.days.from_now).find_more_friends_email
Run Code Online (Sandbox Code Playgroud)

基本上我可以在将来安排工作,所以我不需要我的应用程序连续轮询开始时间的新事件.

现在这就像一个魅力,但我如何改变工作的开始时间?通常,某些预定事件的开始时间会更改.我怎么在sidekiq复制这个?

我知道我可以删除作业并创建一个新作业,但是可以只修改开始时间吗?

编辑:

我建立在Oto Brglez的想法之上,这里是文档化的代码:

module TaskStuff
  class TaskSetter
    include Sidekiq::Worker
    sidekiq_options retry: false

    def perform(task_id)
      task = Task.find(task_id)
      # Get the worker that's performing this job
      if worker = AppHelpers.find_worker(jid)
        # If the worker matches the "at" timestamp then this is the right one and we should execute it
        if worker.last["payload"]["at"].to_s.match(/(\d*\.\d{0,3})\d*/)[1] == task.start.to_f.to_s.match(/(\d*\.\d{0,3})\d*/)[1]
          task.execute
        else
          custom_logger.debug("This worker is the wrong one. Skipping...")
        end
      else
        custom_logger.error("We couldn't find the worker")
      end
    end
  end
end


module AppHelpers …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails sidekiq

8
推荐指数
2
解决办法
9286
查看次数

Lock_expiration 的 Sidekiq 独特作业无法按预期工作

我遇到了 lock_expiration 和 sidekiq 独特作业的问题。

gem 'sidekiq', '4.2.10'
gem 'sidekiq-cron', '1.2.0'
gem 'sidekiq-unique-jobs', '6.0.25'
Run Code Online (Sandbox Code Playgroud)

使用 sidekiq 选项:

gem 'sidekiq', '4.2.10'
gem 'sidekiq-cron', '1.2.0'
gem 'sidekiq-unique-jobs', '6.0.25'
Run Code Online (Sandbox Code Playgroud)

当该工作程序运行时:

[1] pry(main)> HardWorker.perform_async
=> 53b93f122fddbb2ebd350332267484ea
Run Code Online (Sandbox Code Playgroud)

由于执行的是空方法,因此作业完成。锁定发生了,即我在 redis 中看到了这一点: Redis 密钥

如果 AVAILABLE key 在 5 秒 TTL 过期之前仍然存在于 redis 中。只要我刷新该 TTL 并且该密钥存在,我就可以将另一项作业加入队列并继续执行此操作。但是,5 秒后,该密钥过期,我无法将另一个作业排入队列,直到 EXISTS 键过期。

我希望 5 秒过去后能够将另一项作业加入队列。我非常确定在作业正确完成后应该删除 EXISTS 键。但这并没有发生。该作业可以排队,但只能在 AVAILABLE 键的 TTL 内。

我正在从非常旧的版本升级 sidekiq。这是我在不升级系统其他主要部分的情况下所能做到的。

我的问题是,这是有意的行为吗?基于我们所做的升级和配置属性的替换。它应该像以前一样工作。即能够在当前作业完成后将作业排队。

假设这是一个错误或预期的行为。我怎样才能得到这种行为?

ruby ruby-on-rails sidekiq sidekiq-unique-jobs

7
推荐指数
1
解决办法
1738
查看次数