思考Sphinx:在测试环境中“找不到sort-by属性`published_at``

时间:2012-07-13 02:25:03

标签: ruby ruby-on-rails-3 sphinx thinking-sphinx

我收到错误sort-by attribute 'published_at' not found,但仅在测试环境中,即使在重建后也是如此。

在模型中:

belongs_to :content, polymorphic: true
belongs_to :user

define_index do
  indexes user.name, as: :name
  has role
  has user_id
  has content_id
  has content.published_at, as: :published_at, type: :datetime
  has content.status, as: :status, type: :integer
end

开发中运行rake ts:rebuild可以正确构建索引:

# development.sphinx.conf
{
  [...]
  sql_attr_uint = sphinx_internal_id
  sql_attr_uint = sphinx_deleted
  sql_attr_uint = class_crc
  sql_attr_uint = role
  sql_attr_uint = user_id
  sql_attr_uint = content_id
  sql_attr_uint = status
  sql_attr_timestamp = published_at
  sql_attr_string = sphinx_internal_class
  [...]
}

但是,为测试环境运行RAILS_ENV=test rake ts:configts:rebuild会产生以下结果:

# test.sphinx.conf
{
  [...]
  sql_attr_uint = sphinx_internal_id
  sql_attr_uint = sphinx_deleted
  sql_attr_uint = class_crc
  sql_attr_uint = role
  sql_attr_uint = user_id
  sql_attr_uint = content_id
  sql_attr_string = sphinx_internal_class
  [...]
}

这当然会导致测试环境出错:

ThinkingSphinx::SphinxError:
  index content_byline_core: sort-by attribute 'published_at' not found

请注意缺少的statuspublished_at属性。这在过去的几个月里一直在运作,但我不知道是什么导致它破裂。

  • Sphinx 2.0.2-beta
  • 思考Sphinx 2.0.12
  • Rails 3.2.6
  • Ruby 1.9.3

1 个答案:

答案 0 :(得分:0)

使用Zeus时遇到类似的问题。 rake spec有效,但是当我使用zeus时,我得到了类似的消息,你有没有想出来?对我来说,删除宙斯有帮助,但这只是一个部分解决方案...