রেলের উপর রুবি / রুবিতে কি কোনও প্রিন্ট_আর বা ভার_ডাম্পের সমতুল্য রয়েছে?


উত্তর:


133

যে .inspectকোনও অবজেক্টের ফর্ম্যাট করা উচিত পদ্ধতিটি সঠিকভাবে প্রদর্শনের জন্য, কেবলমাত্র ..

<%= theobject.inspect %>

.methodsপদ্ধতি এছাড়াও ব্যবহারের হতে পারে:

<%= theobject.methods.inspect %>

এটি <pre>ডেটা নির্ভর করে ট্যাগগুলিতে রাখতে সহায়তা করতে পারে


2
কনসোলে আরও সুন্দর ফর্ম্যাটিং খুঁজছেন তাদের জন্য কেবলমাত্র একটি সময় বাঁচানোর জন্য:puts theobject.inspect.gsub(",", "\n")
গাস

65

মতামত:

include DebugHelper

...your code...

debug(object)

নিয়ন্ত্রক, মডেল এবং অন্যান্য কোডগুলিতে:

puts YAML::dump(object)

উৎস


ডিবাগহেল্পারের ডিবাগ (অবজেক্ট) অনির্ধারিত পদ্ধতিটি বাড়ায় ug ডিবাগ হেল্পারের ':)
আর্নল্ড রোয়া

8

একটি দৃশ্যে আপনি ব্যবহার করতে পারেন <%= debug(yourobject) %>যা আপনার ডেটার একটি YAML দর্শন উত্পন্ন করবে। আপনি যদি আপনার লগে কিছু চান তবে আপনার ব্যবহার করা উচিত logger.debug yourobject.inspect


6

আপনি রিয়েল কনসোলের আওতায় YAML :: ডাম্প শর্টহ্যান্ড ( y ) ব্যবহার করতে পারেন :

>> y User.first
--- !ruby/object:User 
attributes: 
  created_at: 2009-05-24 20:16:11.099441
  updated_at: 2009-05-26 22:46:29.501245
  current_login_ip: 127.0.0.1
  id: "1"
  current_login_at: 2009-05-24 20:20:46.627254
  login_count: "1"
  last_login_ip: 
  last_login_at: 
  login: admin
attributes_cache: {}

=> nil
>> 

আপনি যদি কিছু স্ট্রিং সামগ্রীর পূর্বরূপ দেখতে চান তবে উত্থাপন ব্যবহার করে দেখুন (উদাহরণস্বরূপ মডেল, নিয়ন্ত্রক বা অন্য কোনও দুর্গম জায়গায়)। আপনি বিনামূল্যে ব্যাকট্রেস পাবেন :)

>> raise Rails.root
RuntimeError: /home/marcin/work/github/project1
    from (irb):17
>> 

আমি আপনাকে রুবি-ডিবাগ চেষ্টা করতে সত্যিই উত্সাহিত করি :

এটি অবিশ্বাস্যভাবে সহায়ক!


6

আপনি ব্যবহার করতে পারেন puts some_variable.inspect। অথবা খাটো সংস্করণ: p some_variable। এবং সুন্দর আউটপুট জন্য, আপনি দুর্দান্ত_প্রিন্ট রত্ন ব্যবহার করতে পারেন ।


3

আপনি যদি চান যে প্রাসঙ্গিক ডেটাটি স্টডআউটে প্রদর্শিত হবে (আপনি যদি কমান্ড লাইন থেকে চালাচ্ছেন তবে টার্মিনাল আউটপুট) ব্যবহার করতে পারেন p some_object


3

পূর্ববর্তী উত্তরগুলি দুর্দান্ত তবে আপনি যদি কনসোল (টার্মিনাল) ব্যবহার করতে না চান, তবে রেলগুলিতে আপনি ডিবাগের হেল্পার অ্যাকশনভিউ :: সহায়কগুলি :: ডিবাগহেল্পার ব্যবহার করে ভিউতে ফলাফল মুদ্রণ করতে পারেন can

#app/view/controllers/post_controller.rb
def index
 @posts = Post.all
end

#app/view/posts/index.html.erb
<%= debug(@posts) %>

#start your server
rails -s

ফলাফল (ব্রাউজারে)

- !ruby/object:Post
  raw_attributes:
    id: 2
    title: My Second Post
    body: Welcome!  This is another example post
    published_at: '2015-10-19 23:00:43.469520'
    created_at: '2015-10-20 00:00:43.470739'
    updated_at: '2015-10-20 00:00:43.470739'
  attributes: !ruby/object:ActiveRecord::AttributeSet
    attributes: !ruby/object:ActiveRecord::LazyAttributeHash
      types: &5
        id: &2 !ruby/object:ActiveRecord::Type::Integer
          precision: 
          scale: 
          limit: 
          range: !ruby/range
            begin: -2147483648
            end: 2147483648
            excl: true
        title: &3 !ruby/object:ActiveRecord::Type::String
          precision: 
          scale: 
          limit: 
        body: &4 !ruby/object:ActiveRecord::Type::Text
          precision: 
          scale: 
          limit: 
        published_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
          subtype: &1 !ruby/object:ActiveRecord::Type::DateTime
            precision: 
            scale: 
            limit: 
        created_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
          subtype: *1
        updated_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
          subtype: *1

0

আমি এটি ব্যবহার :)

require 'yaml'

module AppHelpers
  module Debug
    module VarDump

      class << self

        def dump(dump_object, file_path)
          File.open file_path, "a+" do |log_file|
            current_date = Time.new.to_s + "\n" + YAML::dump(dump_object) + "\n"
            log_file.puts current_date
            log_file.close
          end
        end

      end

    end
  end
end

0

ইদানীং আমি ব্যবহার করছি awesome_print এর apপদ্ধতি যা কনসোলে সেইসাথে মতামত কাজ করে।

টাইপ-নির্দিষ্ট রঙিন আউটপুট সত্যই একটি তাত্পর্য তৈরি করে যদি আপনার দৃষ্টিভঙ্গি Stringবা Numericবস্তুগুলির জন্য স্ক্যান করতে হয় (যদিও একটি পালিশ চেহারা পেতে আমাকে আমার স্টাইলশীটটি কিছুটা সামান্য তিরস্কার করতে হয়েছিল)


0

সম্প্রতি আমি PRY এর অনুরাগী হয়েছি , আমি ভেরিয়েবলগুলি পরীক্ষা করা, চলমান কোডটি ডিবাগ করা এবং বাহ্যিক কোড পরিদর্শন করার মতো কাজ করার জন্য এটি অবিশ্বাস্যরূপে পেয়েছি। এই নির্দিষ্ট প্রশ্নের উত্তর হিসাবে এটি কিছুটা ওভারকিল হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.