将 Rails 引擎添加到 Procfile?

Add Rails Engine to Procfile?

期望的场景是 运行 在部署到 Heroku 时在一个或多个单独的 dyno 上的引擎。 Procfile 看起来像:

web: bundle exec rails server -p $PORT
worker: bundle exec rake jobs:work
engine: TODO

这样我们就可以轻松地缩放引擎使用的测功机:heroku ps:scale engine=3

这可能吗?

这里回答了这个问题:https://groups.google.com/forum/#!topic/components-in-rails/zQTLPZGqIaI

最终听从了 Enrico Teotti 对此 post 的建议:http://teotti.com/feature-flagging-portions-of-your-ruby-on-rails-application-with-engines/

基本上我们需要标记我们的引擎。在 routes.rb:

Rails.application.routes.draw do
  case ENV['APP_RUNNING_MODE']
  when 'my_engine'
    mount MyEngine::Engine => "/my_engine"
  else
    # rest of the routes...
  end
end

Procfile 看起来像:

web: bundle exec rails server -p $PORT
worker: bundle exec rake jobs:work
engine: APP_RUNNING_MODE=my_engine bundle exec rails server -p $PORT