Rails 4异常堆栈跟踪不会在开发中显示

时间:2016-04-16 23:28:36

标签: ruby-on-rails ruby-on-rails-4 exception

我跟随rails tutorial book并使用c9.io网络IDE,因为我按照教程进行操作。在处理我的示例应用程序时,我注意到在开发模式下,页面上没有显示异常。此外,异常堆栈跟踪也未记录在log/development.log中。这种困境使我很难在我的代码中调试错误。

应用程序出错 enter image description here

development.log

中的错误
Completed 500 Internal Server Error in 116ms (ActiveRecord: 2.3ms)

我已尝试/研究的内容

  • config.log_level = :debug(在config / environments / development.rb中)
  • config.consider_all_requests_local = true
  • this
  • that
  • the other

配置/环境/ development.rb

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Do not eager load code on boot.
  config.eager_load = false

  # Show full error reports and disable caching.
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger.
  config.active_support.deprecation = :log

  # Raise an error on page load if there are pending migrations.
  config.active_record.migration_error = :page_load

  # Debug mode disables concatenation and preprocessing of assets.
  # This option may cause significant delays in view rendering with a large
  # number of complex assets.
  config.assets.debug = true

  # Asset digests allow you to set far-future HTTP expiration dates on all assets,
  # yet still be able to expire them through the digest params.
  config.assets.digest = true

  # Adds additional error checking when serving assets at runtime.
  # Checks for improperly declared sprockets dependencies.
  # Raises helpful error messages.
  config.assets.raise_runtime_errors = true

  # Raises error for missing translations
  # config.action_view.raise_on_missing_translations = true
  config.log_level = :debug
end

请注意,我对试图找到抛出异常的解决方案的答案感兴趣。我只是想启用异常堆栈跟踪,以便我自己调试问题。

编辑2/25/2017

的Gemfile

source 'https://rubygems.org'

gem 'rails',                   '4.2.2'
gem 'bcrypt',                  '3.1.7'
gem 'faker',                   '1.4.2'
gem 'carrierwave',             '0.10.0'
gem 'mini_magick',             '3.8.0'
gem 'fog',                     '1.36.0'
gem 'will_paginate',           '3.0.7'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'bootstrap-sass',          '3.2.0.0'
gem 'sass-rails',              '5.0.2'
gem 'uglifier',                '2.5.3'
gem 'coffee-rails',            '4.1.0'
gem 'jquery-rails',            '4.0.3'
gem 'turbolinks',              '2.3.0'
gem 'jbuilder',                '2.2.3'
gem 'sdoc',                    '0.4.0', group: :doc

group :development, :test do
  gem 'sqlite3',     '1.3.9'
  gem 'byebug',      '3.4.0'
  gem 'web-console', '2.0.0.beta3'
  gem 'spring',      '1.1.3'
end

group :test do
  gem 'minitest-reporters', '1.0.5'
  gem 'mini_backtrace',     '0.1.3'
  gem 'guard-minitest',     '2.3.1'
end

group :production do
  gem 'pg',             '0.17.1'
  gem 'rails_12factor', '0.0.2'
  gem 'puma',           '3.1.0'
end

10 个答案:

答案 0 :(得分:4)

与此同时,我能够在我的案例中找到问题的根源,但仍然不是解决方案。

我使用rollbar-gem扩展程序能够在生产中发布错误,这实际上似乎也在开发中吸收了所有错误日志(即使它已被手动禁用)。因此删除gem和所有代码使我能够再次访问我的日志。

我在宝石页面上发布了一个问题。

答案 1 :(得分:2)

尝试更新您的网络控制台宝石。

bundle update web-console

答案 2 :(得分:1)

您没有在development中运行该应用程序。 Rails应用程序可以使用rails s在本地运行(rails server的缩写)。确保将RAILS_ENV或同等设置为development

答案 3 :(得分:1)

查看服务器或log/production.log目录中的生产日志(log/)以了解其他日志,例如log/unicorn.stderr.loglog/puma.log

答案 4 :(得分:1)

检查&rs; log / development.log'的权限。文件夹和文件,以确保rails可以在那里写。

答案 5 :(得分:1)

尽量让 config.consider_all_requests_local = true(在config / environments / development.rb中)

并删除此行 config.log_level =:debug(在config / environments / development.rb中)

另外,您可以尝试使用gem更好的错误来查看它是否能解决问题 https://github.com/charliesome/better_errors

如果没有解决问题,请运行"捆绑更新"一般来说,看看是否有导致问题的宝石

答案 6 :(得分:1)

在application.html.erb文件中添加此项。它应该为您提供更多细节

<%= debug(params)%>

答案 7 :(得分:0)

在我的情况下,只是把config.consider_all_requests_local = true确实让puma显示所有错误和完全回溯。

答案 8 :(得分:0)

我建议使用其他方式显示错误,而不要使用默认的Rails。

我遇到了同样的问题,并尝试了所有方法,但是宝石Better_errors节省了一天。

您可以在Gemfile中使用

group :development, :test do # I use that only in dev
  gem "better_errors"
  # dependency
  gem "binding_of_caller"
end

答案 9 :(得分:0)

在迁移到Rails 5应用程序的Rails 4应用程序中,我遇到了相同的错误。

在开发人员模式和amazon-linux-extras上运行WEBrick。 证明了宝石“网络控制台”;如果Gemfile是特定版本,则无法使用“捆绑更新网络控制台”。所以我必须手动更改并更新。