2016-03-07 47 views
0

我有一个部署在heroku上的美洲狮导轨应用程序。似乎一切都很好,除非我在dev env启动我的应用程序的端口是5000而不是3000.rails localhost + heroku puma config

为什么会发生这种情况?根据我的配置文件,它应该回退到3000,就像线程和并发数字(那些工作正常)。

Procfile.dev

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 

为什么,工头把$端口连接到过程与foreman start -f Procfile.dev

12:36:51 web.1  | [12816] Puma starting in cluster mode... 
12:36:51 web.1  | [12816] * Version 2.13.4 (ruby 2.2.3-p173), codename: A Midsummer Code's Dream 
12:36:51 web.1  | [12816] * Min threads: 5, max threads: 5 
12:36:51 web.1  | [12816] * Environment: development 
12:36:51 web.1  | [12816] * Process workers: 2 
12:36:51 web.1  | [12816] * Preloading application 
12:37:08 web.1  | [12816] * Listening on tcp://0.0.0.0:5000 
12:37:08 web.1  | [12816] ! WARNING: Detected 1 Thread(s) started in app boot: 
12:37:08 web.1  | [12816] ! #<Rack::MiniProfiler::FileStore::CacheCleanupThread:[email protected]/Users/Silo/.rvm/gems/ruby-2.2.3/gems/rack-mini-profiler-0.9.8/lib/mini_profiler/storage/file_store.rb:53 sleep> - /Users/Silo/.rvm/gems/ruby-2.2.3/gems/rack-mini-profiler-0.9.8/lib/mini_profiler/storage/file_store.rb:71:in `sleep' 
12:37:08 web.1  | [12816] Use Ctrl-C to stop 
12:37:08 web.1  | [12816] - Worker 0 (pid: 12822) booted, phase: 0 
12:37:08 web.1  | [12816] - Worker 1 (pid: 12823) booted, phase: 0 

回答

2

对于启动服务器后,默认设置为5000。因此,你的config/puma.rb中会忽略端口3000。请参阅此线程的末尾https://github.com/ddollar/foreman/issues/381

现在,有几种方法可以解决此问题。例如,你可以按如下方式启动工头:foreman s -p 3000.这是我的首选解决方案,因为它不涉及为开发创建特定的proc文件,也不添加到.env文件(PORT = 3000),也不创建。工头文件(端口:3000)。

如果您确实想使用您的开发proc文件,请将其更改如下:web: PORT=3000 bundle exec puma -C config/puma.rb