【问题标题】:How can I configure the rails console to show the line of code where a sql gets executed?如何配置 rails 控制台以显示执行 sql 的代码行?
【发布时间】:2020-05-01 13:31:48
【问题描述】:

目前,当我在 rails 控制台中运行一个方法时,它会显示所有 sql 查询,但我希望它也能显示在代码中调用 sql 的位置。我该怎么做?

【问题讨论】:

    标签: mysql ruby-on-rails ruby


    【解决方案1】:

    在控制台中运行 ActiveRecord::Base.verbose_query_logs = true 为我解决了这个问题。我找到了信息here

    【讨论】:

    • Rails 7.0 更新:此方法的ActiveRecord::Base 版本已被弃用,您现在应该改用ActiveRecord.verbose_query_logs = true
    【解决方案2】:

    Pry (http://pry.github.com/) 可能会有所帮助。有一个show-source 方法可以在从控制台运行时执行此操作。这是我在本地做的一个例子。

    rails c
    
    DEBUG: Chewy strategies stack: [2] <- urgent @ /Users/jmlockl2/.rvm/gems/ruby-2.3.1@ask/gems/chewy-0.9.0/lib/chewy/railtie.rb:49
    Loading development environment (Rails 3.2.22.5)
    2.3.1 :001 > pry
    
    [1] pry(main)> q=Question.last
      Question Load (0.2ms)  SELECT `questions`.* FROM `questions` ORDER BY `questions`.`id` DESC LIMIT 1
    => ...
    
    [2] pry(main)> q.email
    
      User Load (0.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 535441 LIMIT 1
    => "email@gmail.com"
    [3] pry(main)> show-source q.email
    [3] pry(main)> show-source q.email
    From: /Users/...question.rb @ line 564:
    Number of lines: 3
    Owner: Question
    Visibility: public
    
    def email
      self.submitter.present? ? self.submitter.email : ''
    end
    [4] pry(main)>
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2011-02-25
      • 2014-05-28
      • 2017-09-28
      • 1970-01-01
      • 2021-11-03
      • 2019-10-09
      • 2017-08-10
      • 1970-01-01
      • 2015-06-23
      相关资源
      最近更新 更多