如何在Rails 4.2中显示delayed_job日志中列出的数据



我正在使用delayed_job,并在一个页面中显示与该作业相关的所有信息。

将作业列为:

<% @jobs.each do |item| %>   
<%= item.inspect %> 
<% end %>

我得到的详细信息是:

#<Delayed::Backend::ActiveRecord::Job id: 57, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMailernobject...", last_error: nil, run_at: "2016-08-30 00:47:46", locked_at: nil, failed_at: nil, locked_by: nil, created_at: "2016-08-30 00:47:46", updated_at: "2016-08-30 00:47:46", queue: nil> #<Delayed::Backend::ActiveRecord::Job id: 55, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMailernobject...", last_error: nil, run_at: "2016-08-29 09:46:44", locked_at: nil, failed_at: nil, locked_by: nil, created_at: "2016-08-29 09:46:44", updated_at: "2016-08-29 09:46:44", queue: nil> 

有了以上数据,我可以显示id、优先级、尝试次数等;但在处理程序的情况下,有一个由object、method_name等组成的大字符串;如何在rails视图中显示此handler.object和handler.method_name?请帮助:

这是我的处理程序字符串:

---!ruby/object:延迟::PerformableMailer对象:!ruby/class'SubscriptionNotificationer'方法名称::欢迎参数:-!ruby/object:Userraw_attributes:deleted_at:name:在测试电子邮件中:intest@test.comencrypted_password:"$2a$10$IUOp.QkdIPauTnWyBRQXOD0nA.cUc1og/pIEXneBx3nWY/94Hti"电话:"网站:"名称:"id:25 reset_password_token:reset_password_sent_at:remember_created_at:sign_in_count:'0'current_sign_in_at:lastrongign_in_at:current_sign_in_ip:lastrongign_in_ip:confirmation_token:created_at:&1 2016-08-3000:47:46.390321885 Z更新时间:*1联系人id:位置:用户名:照片文件名:照片内容类型:照片文件大小:photo_updated_at:time_zone:beta_code:account_id:26 admin:truelogo_file_name:logo_tent_type:logo_file_size:logo_updated_at:company_name:license_number:spark_id:属性:!ruby/object:ActiveRecord::AttributeSet属性:!ruby/object:ActiveRecord::LazyAttributeHash类型:id:&6.!ruby/object:ActiveRecord::类型::整数精度:小数位数:限制:范围:!ruby/范围开始:-2147483648结束:2147483648 excl:true电子邮件:&2.ruby/object:ActiveRecord::类型::字符串精度:小数位数:限制:encrypted_password:*2 reset_password_token:*2reset_password_sent_at:&7.!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:&3.ruby/object:ActiveRecord::Type::DateTime精度:缩放:限制:remember_created_at:&8.!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3 sign_in_count:&4.ruby/object:ActiveRecord::Type::Integer精度:刻度:限制:范围:!ruby/范围开始:-2147483648结束:2147483648 excl:true current_sign_in_at:&9!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3 lastrongign_in_at:&10!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3 current_sign_in_ip:*2 lastrongign_in_idp:*2confirmation_token:*2created_at:&11!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3 updated_at:&12!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3联系人id:*4位置:*2用户名:*2照片文件名:*2照片_内容类型:*2照片_文件大小:*4照片_更新日期:&13!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3名称:*2姓名:*2电话:*2网站:*2时区:*2 beta_code:*2 account_id:*4 admin:&14!ruby/object:ActiveRecord::Type::布尔精度:scale:limit:已删除(_at):&5.!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3 logo_file_name:*2 logo_content_type:*2 logo _file_size:*4登录更新时间:&15!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3公司名称:*2许可证编号:*2 spark_id:*2值:id:电子邮件:"encrypted_password:"reset_password_token:reset_password_sent_at:remember_created_at:sign_in_count:'0'current_sign_in_at:lastrongign_in_at:current_sign_in_ip:lastrongign_in_ip:confirmation_token:created_at:updated_at:contact_id:位置:用户名:照片文件名:照片内容类型:photo_file_size:phot_updated_at:名称:电话:网站:time_zone:beta_code:account_id:admin:f deleted_at:logo_file_name:logo_content_type:logo_file_size:logo_updated_at:company_name:license_number:spark_id:additional_types:{}具体化:truedelegate_hash:deleted_at:!ruby/object:ActiveRecord::属性::From用户名:deleted_atvalue_before_type_cast:类型:*5值:名称:!ruby/object:ActiveRecord::属性::From用户名:namevalue_before_type_cast:在测试类型中:*2值:在测试电子邮件中:!ruby/object:ActiveRecord::属性::From用户名:电子邮件value_before_type_cast:intest@test.com类型:*2值:intest@test.comencrypted_password:!ruby/object:ActiveRecord::属性::From用户名:encrypted_password value_before_type_cast:"$2a$10$IUOp.QkdIPauTnWyBRQXOD0nA.cUc1og/pIEXneBx3nWY/94Hti"类型:*2值:"$2a$10$IUOp.QkdIPauTnWyBRQXOD0nA.cUc1og/pIEXneBx3nWY/94Hti"电话:!ruby/object:ActiveRecord::Attribute::From用户名:phonevalue_before_type_cast:"类型:*2值:"网站:!ruby/object:ActiveRecord::属性::From用户名:网站value_before_type_cast:"类型:*2值:"名称:!ruby/object:ActiveRecord::Attribute::From用户名:名称value_before_type_cast:"类型:*2值:"id:!ruby/object:ActiveRecord::属性::From用户名:idvalue_before_type_cast:25类型:*6值:25 reset_password_token:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:reset_password_token value_before_type_cast:类型:*2reset_password_sent_at:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:reset_password_sent_at value_before_type_cast:类型:*7remember_created_at:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:remember_created_at value_before_type_cast:类型:*8 sign_in_count:!ruby/object:ActiveRecord::属性::FromDatabase名称:sign_in_countvalue_before_type_cast:'0'类型:*4 current_sign_in_at:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:current_sign_in_at value_befor_type_cast:类型:*9 lastrongign_in_at:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:lastrongign_in_at value_befor_type_cast:类型:*10 current_sign_in_ip:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:current_sign_in_ip value_befor_type_cast:类型:*2 lastrongign_in_idp:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:lastrongign_in_ip value_before_type_cast:类型:*2 confirmation_token:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:confirmation_token value_before_type_cast:类型:*2 created_at:!ruby/object:ActiveRecord::属性::From用户名:created_atvalue_before_type_cast:*1类型:*11值:*1更新日期:!ruby/object:ActiveRecord::属性::From用户名:updated_atvalue_before_type_cast:*1类型:*12值:*1联系人id:!ruby/object:ActiveRecord::属性::FromDatabase名称:contact_idvalue_before_type_cast:类型:*4位置:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:位置value_before_type_cast:类型:*2用户名:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:usernamevalue_before_type_cast:类型:*2照片文件名:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:photo_file_name value_before_type_cast:类型:*2值:photo_content_type:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:photo_content_type value_before_type_cast:类型:*2值:照片文件大小:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:photo_file_size value_before_type_cast:类型:*4值:照片更新时间:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:photo_updated_at value_before_type_cast:类型:*13时区:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:time_zonevalue_before_type_cast:类型:*2测试代码:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:beta_codevalue_before_type_cast:类型:*2 account_id:!ruby/object:ActiveRecord::属性::From用户名:account_idvalue_before_type_cast:26类型:*4值:26管理员:!ruby/object:ActiveRecord::属性::From用户名:adminvalue_before_type_cast:true类型:*14 value:true logo_file_name:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:logo_file_name value_before_type_cast:类型:*2值:logo_content_type:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:logo_content_type value_before_type_cast:类型:*2值:logo_file_size:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:logo_file_size value_before_type_cast:类型:*4值:登录更新时间:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:logo_updated_at value_before_type_cast:类型:*15公司名称:!ruby/object:ActiveRecord::属性::FromDatabase名称:company_namevalue_before_type_cast:类型:*2 license_number:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:license_number value_before_type_cast:类型:*2 spark_id:!ruby/object:ActiveRecord::Attribute::FromDatabase名称:spark_idvalue_before_type_cast:type:*2 new_record:falseactive_record_yaml_version:0-!ruby/object:帐户raw_attributes:deleted_at:id:26 created_at:&16 2016-08-30 00:47:46.1818857956 Zupdated_at:*16名称:完整域:属性:!ruby/object:ActiveRecord::AttributeSet属性:!ruby/object:ActiveRecord::LazyAttributeHash类型:id:*6名称:*2created_at:&18!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3 updated_at:&19!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3完整域:*2删除时间:&17!ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZone转换器子类型:*3个值:id:name:created_at:updated_at:full_domain:deleted_at:additional_types:{}具体化:true delegate_hash:删除时间:!ruby/object:ActiveRecord::属性::From用户名:deleted_at value_before_type_cast:类型:*17值:id:!ruby/object:ActiveRecord::属性::From用户名:idvalue_before_type_cast:26类型:*6值:26创建日期:!ruby/object:ActiveRecord::属性::From用户名:created_atvalue_before_type_cast:*16类型:*18值:*16更新日期:!ruby/object:ActiveRecord::属性::From用户名:updated_atvalue_before_type_cast:*16类型:*19值:*16名称:!ruby/object:ActiveRecord::属性::FromDatabase名称:名称value_before_type_cast:类型:*2完整域:!ruby/object:ActiveRecord::属性::FromDatabase名称:full_domainvalue_before_type_cast:type:*2 new_record:falseactive_record_yaml_version:0

这是我使用@kiddorails answer:时得到的错误日志

ArgumentError-未定义的类/模块帐户:
/home/abcuser/.rvm/rubes/ruby-2.3.0/lib/rube/2.3.0/psyc/class_loader.rb:54:inresolve'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/class_loader.rb:46:in
查找'
/home/abcuser/.rvm/rubes/ruby-2.3.0/lib/rube/2.3.0/psyc/class_loader.rb:28:inload'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:396:in
resolve_class'
/home/abcuser/.rvm/rubes/ruby-2.3.0/lib/ruby/2.3.0/psych/visites/to_ruby.rb:208:invisit_Psych_Nodes_Mapping'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in
访问'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/viewers/viewers.rb:6:inaccept'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in
接受'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/rub/2.3.0/psych/visites/to_ruby.rb:330:inblock in register_empty'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:330:in
register_empty'
/home/abcuser/.rvm/rubes/ruby-2.3.0/lib/ruby/2.3.0/psych/visites/to_ruby.rb:141:invisit_Psych_Nodes_Sequence'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in
访问'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/viewers/viewers.rb:6:inaccept'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in
接受'
/home/abcuser/.rvm/rubes/ruby-2.3.0/lib/rube/2.3.0/psych/visites/to_ruby.rb:338:inblock in revive_hash'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:336:in
revive_hash'
/home/abcuser/.rvm/rubes/ruby-2.3.0/lib/rube/2.3.0/psych/visites/to_ruby.rb:374:inrevive'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:208:in
visit_Psych_Nodes_Mapping'
/home/abcuser/.rvm/rubes/ruby-2.3.0/lib/rube/2.3.0/Psych/viewers/viewer.rb:16:invisit'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in
接受'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/rub/2.3.0/psych/visites/to_ruby.rb:32:inaccept'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:311:in
visit_Psych_Nodes_Document'
/home/abcuser/.rvm/rubes/ruby-2.3.0/lib/rube/2.3.0/Psych/viewers/viewer.rb:16:invisit'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in
接受'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/rub/2.3.0/psych/visites/to_ruby.rb:32:inaccept'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes/node.rb:38:in
to_ruby'
/home/abcuser/.rvm/rubies/ruby-2.3.0/lib/rub/2.3.0/psyc.rb:253:inload' app/views/admin/_jobs_table.html.erb:17:in块_app_views_admin__jobs_html_erb___466009326523590843_337924780'活动记录(4.2.6)lib/active_record/relationship/recommission.rb:46:ineach' app/views/admin/_jobs_table.html.erb:15:in _app_views_admin__jobs_table_html_erb___466009326523590843_337924780'actionview(4.2.6)lib/action_view/template.rb:145:in`block in呈现

这就是yaml格式。您需要按照以下方式对其进行解析以获得数据。

job = Delayed::Job.last
data = YAML.load job.handler # parse the yaml
puts data.method_name #=> :welcome args
puts data.object #=> Delayed::PerformableMailer

你可以像这样迭代:

<% @jobs.each do |item| %>   
<% data = YAML.load item.handler %> 
<%= item.id %>
<%= data.method_name %>
<%= data.object %>
<% end %>

最新更新