2016-08-29 30 views
0

我在應用程序中使用delayed_job,並且顯示了一些有關作業的信息。 我能夠顯示ID和優先級屬性,我無法顯示處理程序的詳細信息。如何在Ruby 2.3.0中將字符串轉換爲YAML?

在我看來,當我嘗試查看職位的詳細信息:

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

當我使用檢查,我得到的信息是:

#<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 %> 

它給了:

「---紅寶石/對象:延遲:: PerformableMailer \ n對象:紅寶石/類 'SubscriptionNotifier' \ nmethod_name:歡迎\ NARGS:\正 紅寶石/對象:用戶\ n raw_attributes :\ n deleted_at:\ n名稱:ESPN STAR \ n 電子郵件:[email protected] \ n encrypted_pa​​ssword: \ 「$ 2A $ 10 $ jlV1bljCXpto4iTHnkKVnOzE.Us6lmGDtkUVdniw4DFTk8vzkX1oS \」 \ n 電話: '' 的\ n網站: '' \ n名稱: '' \ N ID: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?

回答

0

我認爲這應該工作:

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

job.handler YAML的保存,你可以分析這一點,然後訪問method_name用[]。

+0

它表示誤差作爲'未定義類/ module'與日誌中的部分精極度緊張內容。 –

+0

在我以前的Rails 3.2版本,這是工作細如我只是用'<%OBJ = YAML.load(item.handler)%>'和稱爲'<%= obj.method_name%>'。但是在Rails 4.2中,我得到了未定義的類/模塊錯誤。 –

+0

這是因爲YAML試圖從yaml數據自動初始化一個ruby對象。 'Object.new.to_yaml => 「---!紅寶石/對象{} \ n」'所以要確保你有'Delayed'(類/模塊)提供。 – siegy22

相關問題