双控制台输出?

突然,当我在本地运行我的应用程序时,我得到双控制台输出。 有人知道是什么原因引起的吗? 运行Thin和Unicorn时都存在问题

=> Booting Thin => Rails 4.0.0 application starting in development on http://0.0.0.0:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server >> Thin web server (v1.5.1 codename Straight Razor) >> Maximum connections set to 1024 >> Listening on 0.0.0.0:3000, CTRL+C to stop Started GET "/" for 127.0.0.1 at 2013-09-05 22:21:21 +0200 Started GET "/" for 127.0.0.1 at 2013-09-05 22:21:21 +0200 Processing by HomeController#index as HTML Processing by HomeController#index as HTML Rendered home/index.html.erb within layouts/application (299.5ms) Rendered home/index.html.erb within layouts/application (299.5ms) Rendered layouts/_navbar.html.erb (38.3ms) Rendered layouts/_navbar.html.erb (38.3ms) Rendered layouts/_footer.html.erb (0.8ms) Rendered layouts/_footer.html.erb (0.8ms) Completed 200 OK in 704ms (Views: 428.1ms | ActiveRecord: 52.4ms) Completed 200 OK in 704ms (Views: 428.1ms | ActiveRecord: 52.4ms) 

这是我的Gemfile

 # Gemfile source 'https://rubygems.org' ruby '2.0.0' gem 'rails' gem 'actionpack-action_caching' gem 'asset_sync' gem 'authlogic', github: 'binarylogic/authlogic' gem 'bootstrap-sass', github: 'thomas-mcdonald/bootstrap-sass', branch: '3' gem 'coffee-rails' gem 'dalli' gem 'font-awesome-rails' gem 'highcharts-rails' gem 'jbuilder' gem 'jquery-rails' gem 'memcachier' gem 'newrelic_rpm' gem 'pg' gem 'prawn', '>= 1.0.0.rc2' gem 'prawn_rails' gem 'rack-mini-profiler', require: 'rack-mini-profiler' gem 'rack-timeout' gem 'rails-i18n' gem 'rails_12factor' # required by Heroku gem 'sass-rails' gem 'uglifier' gem 'yui-compressor' group :production do gem 'justonedb' gem 'unicorn-rails' end group :development do gem 'annotate' gem 'better_errors' gem 'binding_of_caller' gem 'hirb' gem 'lol_dba' # To find table in need of indexes run 'lol_dba db:find_indexes' gem 'mailcatcher' gem 'pry' gem 'quiet_assets' end group :test do gem 'capybara' gem 'capybara-webkit' gem 'factory_girl_rails', require: false gem 'fuubar' gem 'rspec-rails' gem 'rails_12factor' end 

我的开发.rb

 # development.rb Beerclub::Application.configure do # Settings specified here will take precedence over those in config/application.rb. config.log_level = :debug # 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.compress = false config.assets.debug = true config.serve_static_assets = true end 

和application.rb

 require File.expand_path('../boot', __FILE__) require 'rails/all' # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(:default, Rails.env) module Beerclub class Application < Rails::Application # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. config.time_zone = 'Copenhagen' # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] config.i18n.default_locale = :da # Enable the asset pipeline config.assets.enabled = true config.assets.version = '1.0' # Needs to be false on Heroku config.serve_static_assets = false config.static_cache_control = "public, max-age=31536000" # Add the fonts path config.assets.paths << Rails.root.join('app', 'assets', 'fonts') config.assets.paths << Rails.root.join('vendor', 'assets', 'fonts') # Precompile additional assets config.assets.precompile += %w( *.svg *.eot *.woff *.ttf ) config.assets.precompile += %w( *.png *.jpg *.jpeg *.gif ) end end 

关于rails_12factor – 如果你将Gemfile中的行更改为:

 gem 'rails_12factor', group: :production 

调试时,您将不再在控制台中看到双输出等。

我注意到这是因为rails_12factor gem。 如果你从你的Gemfile注释掉gem rails_12factor ,双输出就会消失。 我的猜测是双输出并不重要,因为你需要为Heroku提供gem。 至于为什么rails_12factor gem导致这个我不知道。

检查您的应用程序中是否包含这样的代码:

  

Rails有时也会制作重复记录。

你可以尝试做:

 rake assets:clean 

或者,也许,在development.rb中注释掉这一行可能会起作用:

 config.active_support.deprecation = :log 

作为最后一次尝试,您甚至可以尝试更改应用程序的文件夹,然后启动服务器以查看结果。

干杯!

从您的示例中,它显示重复发生内联,即。

 A A B B C C 

相反,如果你看到似乎是两个背对背的重复请求,即:

 A B C A B C 

你应该强烈考虑@ aelor的回答是搜索或类似的自引用url标记。 我花了几个小时试图弄清楚为什么我的应用程序出现了两个重复的请求,并在阅读@ aelor的答案之后我找到了

 %link{href: "", rel: "shortcut icon"}/ 

在我的代码中! 这导致我的生产应用程序的每一页都被双重渲染! 性能太糟糕了,太烦人了!

从Rails 4.2和发布时间开始,我所知道的唯一解决方案是从Gemfile中删除rails_12factor。

添加group: :production不再阻止双重记录。 github上的heroku存在一个未解决的问题:

https://github.com/heroku/rails_stdout_logging/issues/1

我们发现这是由运行Rails服务器引起的

 $ rails server 

而不是

 $ thin start 

使用后者时,双重记录问题就会消失。 不幸的是,我们没有时间锁定原因,我们只是改变了我们推出Thin的方式并继续前进。