ruby-on-rails – Foreman / Puma没有在dev env中使用指定的端口

我在我的application.yml(figaro管理env变量)中设置端口为3000
rails使用端口3000
但是当我运行工头开始(按照Heroku的推荐),我得到以下输出
14:53:23 web.1  | started with pid 24425
14:53:23 web.1  | [24425] Puma starting in cluster mode...
14:53:23 web.1  | [24425] * Version 2.11.1 (ruby 2.2.0-p0),codename: Intrepid Squirrel
14:53:23 web.1  | [24425] * Min threads: 5,max threads: 5
14:53:23 web.1  | [24425] * Environment: development
14:53:23 web.1  | [24425] * Process workers: 2
14:53:23 web.1  | [24425] * preloading application
14:53:24 web.1  | WARNING: Skipping key "PORT". Already set in ENV.
14:53:25 web.1  | [24425] * Listening on tcp://0.0.0.0:5000
14:53:25 web.1  | [24425] Use Ctrl-C to stop
14:53:25 web.1  | [24425] - Worker 0 (pid: 24426) booted,phase: 0
14:53:25 web.1  | [24425] - Worker 1 (pid: 24427) booted,phase: 0

procfile

web: bundle exec puma -C config/puma.rb

配置/ puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['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
  ActiveRecord::Base.establish_connection
end

配置/ application.yml

PORT: "3000"

> Rails 4.2.0
>工头0.78.0
> Ruby 2.2.0p0
>美洲狮2.11.1

解决方法

美洲狮港的神秘解决了.

把这个打印放在你的config / puma.rb中

那么你会看到,不管怎样,这个端口是神秘地设置为5000,即使它不在你的ENV.

固定在底部.

puma_port = ENV['PORT'] || 3000
puts "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
puts "puma_port is #{puma_port}"
puts "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ”

打印出来

16:49:28 web.1  | ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
16:49:28 web.1  | puma_port is 5000
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

然后把这行放在你的procfile中(而不是用于Heroku的).我有一个procfile.dev

web: PORT=3000 bundle exec puma -C config/puma.rb

我用这个命令运行它:

foreman start -f procfile.dev

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...