【问题标题】:Ruby on rails how to get Delayed::job Handler content as StringRuby on rails 如何将 Delayed::job 处理程序内容作为字符串
【发布时间】:2014-08-15 21:34:03
【问题描述】:

我有模型contact_message。每次我发送一个我都会创建一个像这样的超时延迟作业:

延迟::Job.enqueue ContactMessageTimout.new(self.permalink) ..

我真的很想在延迟的::job 中取回固定链接,这样我就可以知道哪个contact_message 有延迟的job
但是信息被编码在密钥“处理程序”中,如下所示:

--- !ruby/struct:ContactMessageTimeout
message_permalink: !binary |-
  ZmY2YzAxOTM0MDRjNmIzMjQzMzg=

真正的永久链接是:ff6c0193404c6b324338

那么我怎样才能反序列化delayed::job 处理程序的内容呢?

非常感谢

【问题讨论】:

    标签: ruby ruby-on-rails-3 delayed-job


    【解决方案1】:

    这将是 Base64 编码,它将二进制转换为对 XML 安全的格式。您可以在 rails 控制台中验证这一点:

     my_proj » Base64.decode64("ZmY2YzAxOTM0MDRjNmIzMjQzMzg=")
     => "ff6c0193404c6b324338"
    

    当然,您可以简单地在代码中进行相同的调用来取回您的二进制值。

    【讨论】:

    • 成功了!但经过更多检查后,我发现有时它们是编码的,有时不是。你知道为什么吗?
    • 我猜如果有不可打印的字符,它会自动进行编码。另一种选择是在保存之前将二进制值转换为字符串(十六进制)。然后在 DJ 方面自己将其转换回来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多