【问题标题】:How to prevent cucumber feature tests from affecting elasticsearch index in development?开发中如何防止黄瓜特性测试影响elasticsearch索引?
【发布时间】:2015-07-03 21:20:29
【问题描述】:

我对在 Rails 应用程序中使用 elasticsearch 非常陌生,并且正在使用耐嚼的 gem 来实现它。

我已经设置好一切并正常工作,我认为由于 Chewy.settings = {prefix: 'test'} 配置,耐嚼的 gem 正在为测试和开发环境创建单独的索引。

我的 RSpec 测试运行良好,不会在开发中造成任何问题,但是当我运行功能测试时,我在搜索时遇到开发错误。

undefined method `image_url' for nil:NilClass

我相信这是因为弹性搜索索引被测试覆盖,然后记录已从测试数据库中删除,因此返回 nil。

但是我不确定为什么会在开发中发生这种情况,因为我认为开发和测试环境具有单独的弹性搜索索引。

要解决这个问题,我必须运行 rake chefy:reset:all

我对 elasticsearch 的功能不是很熟悉,因此希望有人能稍微了解一下幕后发生的事情以及如何为测试环境设置 elasticsearch 索引。

【问题讨论】:

    标签: ruby-on-rails ruby elasticsearch lucene cucumber


    【解决方案1】:

    听起来您需要将developmenttest 分开,以便它们使用不同的端口。 Chewy docs 中给出的例子可能就是你需要的:

    # config/chewy.yml
    # separate environment configs
    test:
      host: 'localhost:9250'
      prefix: 'test'
    development:
      host: 'localhost:9200'
    

    希望有帮助!

    【讨论】:

    • 感谢您的回复。查看 .yml 文件让我精神一振,意识到我正在硬编码配置设置中“测试”的所有前缀!将其更改为“Chewy.setting = {prefix: Rails.env}”就可以了:)
    【解决方案2】:

    对于所有环境,我将索引前缀硬编码为“test”,因此测试和开发环境的索引命名相同。

    正确的配置是

    Chewy.settings = {前缀:Rails.env}

    这将为测试环境中的索引添加“测试”前缀,为开发环境中的索引添加“开发”前缀。

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 2013-05-23
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 2011-04-02
      相关资源
      最近更新 更多