Rails 当我尝试点击 URL 时,日志在 Puma 的终端中没有显示任何内容:localhost:3000

Rails logs do not show anything in terminal for Puma when I try to hit the URL: localhost:3000

当我执行 rails s 时,它成功启动了我的服务器,并通过 URL http://localhost:3000 提供页面,但问题是:它没有显示任何更改我从该服务器访问任何内容。

访问了这么多页面,还是没有任何提示。我已经重新启动了 Rails 服务器,并使用以下命令杀死了所有 rails 服务器:

ps aux | grep 'rails' | grep -v 'grep' | awk '{ print  }' | xargs kill -9

已经退出并重新开始 iTerm,但没有任何帮助。

我正在使用 Rails 5.0.0 和 ruby 2.2.3。

config/puma.rb 文件有问题,我花了一个晚上才弄明白。无论如何,Puma 的正确配置 运行 您的开发服务器是:

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

我遇到了同样的问题。 puma.rb 文件中有一个错误,我通过在 puma.rb 文件中复制以下内容来解决问题。之后,重新启动服务器,您现在可以找到服务器上任何请求的日志,还可以通过在代码中提及断点来停止服务器上的断点,这在以前的配置中是不可能的。

# Code goes here
workers 2

# Min and Max threads per worker
threads 1, 6

app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/shared"

# Default to production
rails_env = ENV['RAILS_ENV'] || "production"
environment rails_env

# Set up socket location
bind "unix://#{shared_dir}/sockets/puma.sock"

# Logging
stdout_redirect "#{shared_dir}/log/puma.stdout.log", "#{shared_dir}/log/puma.stderr.log", true

# Set master PID and state locations
pidfile "#{shared_dir}/pids/puma.pid"
state_path "#{shared_dir}/pids/puma.state"
activate_control_app

将此添加到 development.rb 文件中。我的应用程序在 Rails 6.

config.logger = Logger.new(STDOUT)

就我而言,多亏了@mick 评论 当我运行 它通过rails s(准确地说bundle exec rails s)时我的日志开始出现。

我稍后会在调试后更新这个答案,了解为什么会有不同,但预感是 运行 它通过 rails s 将日志输出配置为在以下情况下路由到 STDOUT服务器未 运行 处于守护进程模式。