Двойной консольный выход?

Внезапно, когда я запускаю свое приложение локально, я получаю двойной консольный вывод. Кто-нибудь знает, что могло бы вызвать это? Проблема существует и при запуске Thin and 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

My development.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 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

Ответ 1

в отношении rails_12factor - если вы измените строку в Gemfile на:

gem 'rails_12factor', group: :production

вы больше не увидите двойной вывод на консоли во время отладки и т.д.

Ответ 2

Я заметил, что это происходит из-за драгоценности rails_12factor. Если вы прокомментируете gem rails_12factor из своего Gemfile, двойной выход должен исчезнуть. Я предполагаю, что двойной выход не важен, чтобы беспокоиться, так как вам нужен драгоценный камень в любом случае для Heroku. Что касается того, почему камень rails_12factor вызывает это, я понятия не имею.

Ответ 3

Проверьте, есть ли в вашем приложении такой код:

<img src="#">

Rails иногда также делает дубликаты записей.

Вы можете попробовать:

rake assets:clean

Или, может быть, комментирование этой строки в development.rb может работать:

config.active_support.deprecation = :log

Как последняя попытка, вы даже можете попробовать изменить папку приложения, а затем запустить сервер, чтобы увидеть результат.

Ура!

Ответ 4

В вашем примере это показывает, что дубликаты происходят внутри, т.е.

A
A
B
B
C
C

Если вместо этого вы видите то, что кажется двумя дублирующими повторяющимися запросами, то есть:

A
B
C

A
B
C

Вы должны строго рассмотреть ответ @aelor на поиск a <img src="#"> или аналогичный тег self-referential url. Я потратил часы, пытаясь понять, почему мое приложение появилось, чтобы сделать два повторяющихся запроса, и после прочтения ответа @aelor я нашел

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

в моем коде! Это заставляло каждую страницу моего производственного приложения быть двойной рендерингом!!!! Настолько плохо для производительности и так раздражает!

Ответ 5

Как и Rails 4.2 и время публикации, единственным решением, о котором я знаю, является удаление rails_12factor из Gemfile.

Добавление group: :production больше не предотвращает двойную регистрацию. Существует открытый вопрос с герою на github:

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

Ответ 6

Мы обнаружили, что это вызвано запуском сервера Rails через

$ rails server

а не

$ thin start

При использовании последнего проблема с двойным протоколированием исчезает. К сожалению, у нас не было времени, чтобы заблокировать причину, мы просто изменили способ, которым мы запустили Thin и двинулись дальше.