Rails 5:Rails c在错误信息中没有显示行号

4

我正在运行升级自4.2.x的Rails 5。

在控制台和运行失败方法时,错误信息中不会显示行号,我只能看到:

Traceback (most recent call last):
NoMethodError (undefined method `[]' for nil:NilClass)

我确保development.rb文件拥有以下内容:

config.log_level = :debug

我的 Gemfile:

source 'https://rubygems.org'

  gem 'rails',              '5.1.2'     # mothership
  gem 'bootstrap-sass'                  # crutches
  gem 'sass-rails'                      # Use SCSS for stylesheets
  gem 'devise'                          # login/sessions
  gem 'devise-i18n'                     # login/sessions
  gem 'haml'                            # markup language
  gem 'uglifier',           '>= 1.3.0'  # Use Uglifier as compressor for JavaScript assets
  gem 'coffee-rails'
  gem 'jquery-rails'                   # Use jquery as the JavaScript library
  gem 'bcrypt',             '~> 3.1.7'  # Use ActiveModel has_secure_password
  gem 'html5_validators'
  gem 'execjs'
  gem 'puma'
  gem 'pg'
  gem 'listen'

  group :development do
    gem 'rails_db'
    gem 'hirb'
    gem "better_errors"
    gem "binding_of_caller"
  end

  group :production do
    gem 'aws-sdk-rails'
    gem 'rails_12factor'
  end

我应该做哪些更改,以便我能够看到发生错误的行?

我从控制台调用了一个模型类的方法。 - JUlinder
从记忆中来看,控制台通常不会给出行号... 从规范中调用它,你应该能够得到它们... - Taryn East
它们在你的日志文件中,请检查 log/development.rb - Anthony
1个回答

5
如果您在控制台中执行以下操作:
begin
  your_method_call
rescue => e
  puts e.backtrace
end

你可以捕获异常并打印回溯信息。你不必使用puts,可以根据需要自行处理回溯信息,但是你应该明白这个意思。
希望对你有所帮助。

1
我在控制台中写下以下代码:begin; Assessment.last.score; rescue => e; puts e.backtrace; end,然后得到了 => nil 的结果。 - JUlinder
1
puts会返回nil,但回溯信息应通过标准输出打印。除此之外,你可以将e赋值给一个变量,并尝试手动访问e.backtrace,而不是使用puts - Edward

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接