如何使用相同的Rpectesting来testingRails项目的生产版本?

我正在用Rails构build一个JSON API服务,并使用docker在生产环境中运行它。 在我的Dockerfile中,我想要使用:

RUN bundle install --without development test 

我有点担心的是Gemfile可能包含一些真正必要的内容:development或者:test

这是一个人为的例子Gemfile

 # Example situation which works in development and tests but fails in production group :development, :test do gem 'rails', '~> 5.1.4' end 

在这种情况下,testing会传递得很好,但生产将被打破。

所以我正在考虑构build生产容器,并使用Docker运行它并公开端口进行testing。 使用相同的Rspec type: request对该容器的type: requesttesting是非常棒的。 testing运行器和rails服务器可以共享相同的testing数据库。

我怎么能强制我的Rspectesting不生成自己的服务器,但使用已经在后台运行的不同的服务?

我过去所做的是构build我的docker容器,然后运行它,等待10秒钟,然后grep日志为您的应用程序服务器的成功消息。

通常情况下,成功的消息是足够的 – 你可以做一个简单的烟雾testing,但是然后你会走在金丝雀部署的路上(这很好,这只是一个不同的思维方式…)