を使用してかなり複雑なマッピングを生成していElasticsearch-Model
ます。検索関連のすべてのメソッドを に抽出しましたActiveSupport::Concern
。次のコードは Tire gem を使用して記述したものですが、Tire は Elasticsearch 1.x をサポートしていないため、gem を Elasticsearch-Rails および Elasticsearch-Model にアップグレードしています。現在の実装は次のようになります。
require 'active_support/concern'
module SearchBooks
extend ActiveSupport::Concern
included do
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
mapping do
locales = %w['de', 'en', 'fr']
locales.each do |locale|
class_eval <<-RUBY
indexes: ...
RUBY
end
end
end
しかし、私はこのエラーが発生しています:
/Users/xxx/.rvm/gems/ruby-2.0.0-p647/gems/activesupport-3.2.22/lib/active_support/core_ext/kernel/singleton_class.rb:11:in `class_eval': undefined method `indexes' for #<Class:0x007fea661037ec> (NoMethodError)
usinddef included(base)
や then など、多くのことを試しましたが、適切な範囲base.eval
に入ることができません。class_eval
何か案は?