双控制台输出?

时间:2013-09-23 19:03:09

标签: ruby-on-rails ruby

突然,当我在本地运行我的应用程序时,我得到双控制台输出。有人知道是什么原因引起的吗?运行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

我的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'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

6 个答案:

答案 0 :(得分:12)

关于rails_12factor - 如果您将Gemfile中的行更改为:

gem 'rails_12factor', group: :production

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

答案 1 :(得分:11)

我注意到这是因为rails_12factor宝石。如果您从gem rails_12factor注释掉Gemfile,则双输出应该消失。我的猜测是双输出并不重要,因为你无论如何都需要Heroku的宝石。 至于rails_12factor宝石导致这种情况的原因,我不知道。

答案 2 :(得分:1)

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

<img src="#">

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

您可以尝试:

rake assets:clean

或许,在development.rb中注释掉这一行可能会有效:

config.active_support.deprecation = :log

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

干杯!

答案 3 :(得分:0)

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

A
A
B
B
C
C

相反,如果您看到两个背对背的重复请求,即:

A
B
C

A
B
C

您应该强烈考虑@ aelor的回答,即搜索<img src="#">或类似的自引用网址标记。我花了好几个小时试图弄清楚为什么我的应用程序出现了两个重复的请求,并且在阅读@ aelor的回答后我找到了

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

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

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

我们发现这是由于通过

运行Rails服务器引起的
$ rails server

而不是

$ thin start

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