11

突然、アプリをローカルで実行すると、コンソール出力が 2 つ表示されます。これを引き起こした原因を誰か知っていますか?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
4

6 に答える 6

11

これはrails_12factorgemが原因で発生することに気付きました。gem rails_12factor二重出力からコメントアウトするとGemfile、出力が消えるはずです。とにかくHerokuにはgemが必要なので、二重出力は心配する必要がないと思います。宝石がこれを引き起こす理由については、rails_12factor私にはわかりません。

于 2013-11-03T08:26:23.807 に答える
1

アプリケーションに次のようなコードがあるかどうかを確認します。

<img src="#">

Rails では、これが原因で重複したレコードが作成されることがあります。

あなたはやってみることができます:

rake assets:clean

あるいは、development.rb の次の行をコメントアウトするとうまくいくかもしれません:

config.active_support.deprecation = :log

最後の試みとして、アプリケーションのフォルダを変更してから、サーバーを起動して結果を確認することもできます。

乾杯!

于 2013-09-23T19:14:32.440 に答える
0

あなたの例から、重複がインラインで発生していることがわかります。

A
A
B
B
C
C

代わりに、2 つの連続した重複したリクエストのように見えるものが表示されている場合:

A
B
C

A
B
C

<img src="#">または同様の自己参照 URL タグを探し出すという @aelor の回答を強く検討する必要があります。アプリケーションが2つの重複したリクエストを作成しているように見える理由を理解するのに何時間も費やしました.@aelorの回答を読んだ後、私は見つけました

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

私のコードで!本番アプリのすべてのページが二重にレンダリングされていました!!!! パフォーマンスが悪く、とても迷惑です!

于 2015-02-03T12:29:01.360 に答える
0

Rails 4.2 およびこの投稿の時点で、私が認識している唯一の解決策は、Gemfile から rails_12factor を削除することです。

追加group: :productionしても、二重ログが防止されなくなりました。github の heroku には未解決の問題があります。

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

于 2015-09-11T23:57:10.227 に答える