| 548 | | attr_reader :reindex |
|---|
| 549 | | @ferret_reindex = true |
|---|
| 550 | | |
|---|
| 551 | | def ferret_before_update |
|---|
| 552 | | @ferret_reindex = true |
|---|
| 553 | | end |
|---|
| 554 | | alias :ferret_before_create :ferret_before_update |
|---|
| 555 | | |
|---|
| | 547 | |
|---|
| | 548 | # re-eneable ferret indexing after a call to #disable_ferret |
|---|
| | 549 | def ferret_enable; @ferret_disabled = nil end |
|---|
| | 550 | |
|---|
| | 551 | # returns true if ferret indexing is enabled |
|---|
| | 552 | def ferret_enabled?; @ferret_disabled.nil? end |
|---|
| | 553 | |
|---|
| | 554 | # Disable Ferret for a specified amount of time. ::once will disable |
|---|
| | 555 | # Ferret for the next call to #save (this is the default), ::always will |
|---|
| | 556 | # do so for all subsequent calls. |
|---|
| | 557 | # To manually trigger reindexing of a record, you can call #ferret_update |
|---|
| | 558 | # directly. |
|---|
| | 559 | # |
|---|
| | 560 | # When given a block, this will be executed without any ferret indexing of |
|---|
| | 561 | # this object taking place. The optional argument in this case can be used |
|---|
| | 562 | # to indicate if the object should be indexed after executing the block |
|---|
| | 563 | # (::index_when_finished). Automatic Ferret indexing of this object will be |
|---|
| | 564 | # turned on after the block has been executed. |
|---|
| | 565 | def disable_ferret(option = :once) |
|---|
| | 566 | if block_given? |
|---|
| | 567 | @ferret_disabled = :always |
|---|
| | 568 | yield |
|---|
| | 569 | ferret_enable |
|---|
| | 570 | ferret_update if option == :index_when_finished |
|---|
| | 571 | elsif [:once, :always].include?(option) |
|---|
| | 572 | @ferret_disabled = option |
|---|
| | 573 | else |
|---|
| | 574 | raise ArgumentError.new("Invalid Argument #{option}") |
|---|
| | 575 | end |
|---|
| | 576 | end |
|---|
| | 577 | |
|---|