2015-11-02 61 views
1

所需的场景是在部署到Heroku时在单独的测功机或dynos上运行引擎。该Procfile看起来是这样的:将Rails引擎添加到Procfile?

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

这种方式,我们可以通过缩放引擎容易使用的DYNOS:heroku ps:scale engine=3

这可能吗?

回答

1

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

端了以下从恩里科Teotti对这个职位的建议: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 
+0

非常有趣的解决方案!您是如何设法将同一端口上的两个Rails服务器公开到外部访问的?作为一个方面的评论,如果Procfile的:部分在运行时在环境变量中可用,那么一个很好的特性就是如此,所以你不需要像在APP_RUNNING_MODE中那样明确地指定它。保持摇摆! – fagiani

+0

嗨@fagiani对于迟到的回复感到抱歉。刚刚检查过,我们使用相同的端口,但在不同的heroku应用程序。 –