繁体   English   中英

如何在Ruby 2.3.0中将字符串转换为YAML?

[英]How to convert string to YAML in Ruby 2.3.0?

我在应用程序中使用了delay_job,并且正在显示有关作业的一些信息。 我能够显示我无法显示处理程序详细信息的id和priority属性。

在我看来,当我尝试查看作业的详细信息时:

<% @jobs.each do |item| %>   
  <% obj = YAML.load(item.to_yaml) %>
  <%= obj.inspect %> 
<% end %>

当我使用inspect时,我得到的详细信息如下:

#<Delayed::Backend::ActiveRecord::Job id: 51, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMailer\nobject...", last_error: nil, run_at: "2016-08-25 19:56:44", locked_at: nil, failed_at: nil, locked_by: nil, created_at: "2016-08-25 19:56:44", updated_at: "2016-08-25 19:56:44", queue: nil>

现在,我需要从处理程序中获取method_name,以便列出详细信息,

 <%= obj.handler.inspect %>

它给:

“ ----!ruby / object:Delayed :: PerformableMailer \\ nobject:!ruby / class'SubscriptionNotifier'\\ nmethod_name::welcome \\ nargs:\\ n-!ruby / object:User \\ n raw_attributes:\\ n delete_at:\\ n名称:ESPN STAR \\ n电子邮件:esp@test.com \\ n encryption_password:\\“ $ 2a $ 10 $ jlV1bljCXpto4iTHnkKVnOzE.Us6lmGDtkUVdniw4DFTk8vzkX1oS \\” \\ n电话:\\ n网站:\\ n名称: 22 \\ n reset_password_token:\\ n reset_password_sent_at:\\ n Remember_created_at:\\ n sign_in_count:'0'\\ n以此类推

为了显示method_name,我认为我们应该在字符串yaml上面做,为此我尝试了:

 <% obj = YAML.load(item.handler.to_yaml) %>

没运气。 请帮助我如何转换为yaml或如何显示此method_name?

我认为这应该工作:

<% @jobs.each do |job| %>
  <%= YAML.load(job.handler)["method_name"] %> 
<% end %>

就像在job.handler中保存了yaml一样,您可以对此进行解析,然后使用[]访问method_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM