Foreman / Puma没有在dev env中使用指定的端口
我在我的application.yml中设置端口为3000(figaro管理env变量) rails s
使用端口3000但是当我运行foreman start
(按照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
使用.foreman文件:
port: 3000
或.env文件:
PORT=3000
要么一个人应该工作,那么你可以只使用foreman start
port ENV['PORT'] || 3000
此行表示您将首先尝试使用ENV['PORT']
,如果不存在,您将回退到使用3000
作为端口号。 那么你在foreman
开始之前的任何地方定义PORT
环境变量吗? config/application.yml
环境变量只会在rails服务器启动后加载,所以在这里定义端口号没有用。
你可以尝试添加
PORT=3000
项目目录根目录中的.env
文件中的PORT=3000
。
资料来源: https : //devcenter.heroku.com/articles/getting-started-with-rails5#procfile
- 用于生产的Rails性能调优?
- 每次迁移后你需要重启Heroku吗?
- 添加字体后,Heroku Rails资产管道无法预编译
- 如何为heroku应用程序更改DATABASE_URL
- 为什么没有“heroku捆绑更新”?
- 使用Heroku在RedisToGo上使用Resque,Resque Server
- Rails教程chapter3 heroku找不到控制器StaticPagesController
- ActiveRecord :: StatementInvalid:PG :: ReadOnlySqlTransaction: – 即使在取消关注后,Heroku数据库仍然只读
- 在没有自定义域的情况下,子域会话在Heroku上的Rails 2.3和Rails 3中不起作用?