Ruby on rails 在Ruby/Rails中,PHP的print\r是否有等价物?

Ruby on rails 在Ruby/Rails中,PHP的print\r是否有等价物?,ruby-on-rails,ruby,Ruby On Rails,Ruby,在PHP中,您可以执行以下操作: 打印$var或vardump$var 它可以打印有关变量的人类可读信息 Ruby/Rails中是否有等效的函数/帮助程序?尝试使用pp。 如果.irbc尚未执行此操作,则需要在脚本或irb中要求它: require 'pp' 然后您可以“预打印”对象,因此: pp object 有一种方法很有用。有时对对象调用to_s方法将有助于返回对象的字符串表示形式。您还可以查询方法、局部变量、类变量、实例变量、常量和全局变量 不需要“pp”和使用pp,您只需 p ob

在PHP中,您可以执行以下操作:

打印$var或vardump$var

它可以打印有关变量的人类可读信息

Ruby/Rails中是否有等效的函数/帮助程序?

尝试使用pp。 如果.irbc尚未执行此操作,则需要在脚本或irb中要求它:

require 'pp'
然后您可以“预打印”对象,因此:

pp object
有一种方法很有用。有时对对象调用to_s方法将有助于返回对象的字符串表示形式。您还可以查询方法、局部变量、类变量、实例变量、常量和全局变量


不需要“pp”和使用pp,您只需

p object
测试示例

require 'pp'

class A
  def initialize
    @a = 'somevar'
    @b = [1,2,3]
    @c = {'var' => 'val'}
  end
end

a = A.new
pp a # Gives -> #<A:0x2c6d048 @a="somevar", @b=[1, 2, 3], @c={"var"=>"val"}>
p a # Gives -> #<A:0x2c6d048 @a="somevar", @b=[1, 2, 3], @c={"var"=>"val"}>. No need to require 'pp'

在Rails模板中,您可以

<%= debug an_object %>

而且它可以很好地进行HTML预输出。

查看rails调试指南:

提示: 脚本/控制台非常适合在应用程序的上下文中尝试
脚本/服务器-调试器要在调试器打开的情况下启动服务器,您可以在代码中使用“debug”进入交互式shell

我想我有点晚了,但是logger.info[debug | warning]呢?从控制器和模型中使用此选项。在开发模式下,它将显示在日志文件development.log中;以及上述意见

这些并不是您问题的确切答案,但您也可以使用脚本/控制台将rails应用程序加载到交互式会话中


最后,您可以将调试器放在rails应用程序的一行中,当您的应用程序执行这一行时,浏览器将挂起,并且您将能够从您在源代码中放置调试器的那一行开始进入调试会话。

我非常依赖的一种方法是:

logger.debug "OBJECT: #{an_object.to_yaml}"

很容易阅读,但对于大型对象来说可能会有点笨拙。

我知道这是一篇老文章,但这是Google在搜索Ruby等价的PHP print\r时弹出的第一个窗口。我在命令行模式下使用Ruby,实际上没有一个很好的等价物。对于相当简单的结构,pp是可以的,但一旦开始在数组中嵌套哈希,在更多数组中嵌套哈希,它很快就会变成一个混乱。因为我还没有找到一个很好的印刷模拟,所以我自己写了一个。就我的目的而言,它已经足够好了,不太复杂,我想我应该分享它,以避免其他人感到头痛。将输出与输出进行比较

下面是一个故意弄乱的示例,以说明为什么PHP print\r如此漂亮:

    carTools =  [ "Socket Set", "Combination Wrenches", "Oil Filter puller", "Brake Compressor" ]
    houseTools =[ "Circular Saw", "Miter Saw", "Drill" ]
    garageItems = Hash["Car1" => "Ford Mustang", "Car2" => "Honda Civic", "Bike1" => "IronHorse"]
    garageItems["Tools"] = Hash["Car Tools" => carTools, "House Tools" => houseTools]
    constructionSupplies = Hash["Plywood" => ["3/4\" T&G Plywood Sheets", "1/2\" Plywood Sheets"],
                                "Boards" => ["2x4s", "2x6s", "Engineered I-Joists"],
                                "Drywall" => ["4x8 1/2\" Sheetrock", "Mesh tape", "Paper tape", "Joint compount"]]
    carParts = Hash["Mustang" => ["Clutch", "Transmission", "3.55 Ring & Pinion Gears", "Differential", "30# Injectors", "Pro-M 77mm MAF"]]
    garageItems["Supplies"] = ["Oil", "WD40", constructionSupplies, carParts, "Brake Fluid"]
    print_r(garageItems)
人类实际上可以理解的打印输出:

    Hash
    (
        [Car1] => Ford Mustang
        [Car2] => Honda Civic
        [Bike1] => IronHorse
        [Tools] => Hash
            (
                [Car Tools] => Array
                    (
                        [0] => Socket Set
                        [1] => Combination Wrenches
                        [2] => Oil Filter puller
                        [3] => Brake Compressor
                    )
                [House Tools] => Array
                    (
                        [0] => Circular Saw
                        [1] => Miter Saw
                        [2] => Drill
                    )
            )
        [Supplies] => Array
            (
                [0] => Oil
                [1] => WD40
                [2] => Hash
                    (
                        [Plywood] => Array
                            (
                                [0] => 3/4" T&G Plywood Sheets
                                [1] => 1/2" Plywood Sheets
                            )
                        [Boards] => Array
                            (
                                [0] => 2x4s
                                [1] => 2x6s
                                [2] => Engineered I-Joists
                            )
                        [Drywall] => Array
                            (
                                [0] => 4x8 1/2" Sheetrock
                                [1] => Mesh tape
                                [2] => Paper tape
                                [3] => Joint compount
                            )
                    )
                [3] => Hash
                    (
                        [Mustang] => Array
                            (
                                [0] => Clutch
                                [1] => Transmission
                                [2] => 3.55 Ring & Pinion Gears
                                [3] => Differential
                                [4] => 30# Injectors
                                [5] => Pro-M 77mm MAF
                            )
                    )
                [4] => Brake Fluid
            )
    )

它是在视图文件中还是在控制器中?我已经在控制器def index@users=User.all end中写下了这段代码——现在我想打印数组,但我应用了这段代码,但不起作用:
    carTools =  [ "Socket Set", "Combination Wrenches", "Oil Filter puller", "Brake Compressor" ]
    houseTools =[ "Circular Saw", "Miter Saw", "Drill" ]
    garageItems = Hash["Car1" => "Ford Mustang", "Car2" => "Honda Civic", "Bike1" => "IronHorse"]
    garageItems["Tools"] = Hash["Car Tools" => carTools, "House Tools" => houseTools]
    constructionSupplies = Hash["Plywood" => ["3/4\" T&G Plywood Sheets", "1/2\" Plywood Sheets"],
                                "Boards" => ["2x4s", "2x6s", "Engineered I-Joists"],
                                "Drywall" => ["4x8 1/2\" Sheetrock", "Mesh tape", "Paper tape", "Joint compount"]]
    carParts = Hash["Mustang" => ["Clutch", "Transmission", "3.55 Ring & Pinion Gears", "Differential", "30# Injectors", "Pro-M 77mm MAF"]]
    garageItems["Supplies"] = ["Oil", "WD40", constructionSupplies, carParts, "Brake Fluid"]
    print_r(garageItems)
    Hash
    (
        [Car1] => Ford Mustang
        [Car2] => Honda Civic
        [Bike1] => IronHorse
        [Tools] => Hash
            (
                [Car Tools] => Array
                    (
                        [0] => Socket Set
                        [1] => Combination Wrenches
                        [2] => Oil Filter puller
                        [3] => Brake Compressor
                    )
                [House Tools] => Array
                    (
                        [0] => Circular Saw
                        [1] => Miter Saw
                        [2] => Drill
                    )
            )
        [Supplies] => Array
            (
                [0] => Oil
                [1] => WD40
                [2] => Hash
                    (
                        [Plywood] => Array
                            (
                                [0] => 3/4" T&G Plywood Sheets
                                [1] => 1/2" Plywood Sheets
                            )
                        [Boards] => Array
                            (
                                [0] => 2x4s
                                [1] => 2x6s
                                [2] => Engineered I-Joists
                            )
                        [Drywall] => Array
                            (
                                [0] => 4x8 1/2" Sheetrock
                                [1] => Mesh tape
                                [2] => Paper tape
                                [3] => Joint compount
                            )
                    )
                [3] => Hash
                    (
                        [Mustang] => Array
                            (
                                [0] => Clutch
                                [1] => Transmission
                                [2] => 3.55 Ring & Pinion Gears
                                [3] => Differential
                                [4] => 30# Injectors
                                [5] => Pro-M 77mm MAF
                            )
                    )
                [4] => Brake Fluid
            )
    )