[英]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.