search_flip 4.0.0.beta5 → 4.0.0.beta6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +42 -0
- data/lib/search_flip/config.rb +7 -1
- data/lib/search_flip/json.rb +2 -13
- data/lib/search_flip/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: cb9f652fcf2d89715a4ac400906e2b4702bae052b721f671e31caaceca01fd37
         | 
| 4 | 
            +
              data.tar.gz: c1bca6110c7e40a223462f183021763ce3dc89f538e5d492099cee751988292d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 79c607032410d675a0663b13a6af21a64501a587ec1c07852e92e459b4034043121187016aabdab3672e0013fd1b86731b2c3f3a0d4484f08d39134328e3adc3
         | 
| 7 | 
            +
              data.tar.gz: a06b1866d3322185692cab6ddd2c8a9dd88bb7eb46b955a732bf6e70fae174dbbd4f658b51cddc051c8d512f5f48619147bd32620fa24623393338360d9ed4e6
         | 
    
        data/README.md
    CHANGED
    
    | @@ -882,6 +882,48 @@ Thus, if your ORM supports `.find_each`, `#id` and `#where` you are already | |
| 882 882 | 
             
            good to go. Otherwise, simply add your custom implementation of those methods
         | 
| 883 883 | 
             
            that work with whatever ORM you use.
         | 
| 884 884 |  | 
| 885 | 
            +
            ## JSON
         | 
| 886 | 
            +
             | 
| 887 | 
            +
            SearchFlip is using the [Oj gem](https://github.com/ohler55/oj) to generate
         | 
| 888 | 
            +
            and parse JSON. More concretely, SearchFlip is using:
         | 
| 889 | 
            +
             | 
| 890 | 
            +
            ```ruby
         | 
| 891 | 
            +
            Oj.dump({ key: "value" }, mode: :custom, use_to_json: true, time_format: :xmlschema, bigdecimal_as_decimal: false)
         | 
| 892 | 
            +
            Oj.load('{"key":"value"}', mode: :custom, use_to_json: true, time_format: :xmlschema, bigdecimal_as_decimal: false)
         | 
| 893 | 
            +
            ```
         | 
| 894 | 
            +
             | 
| 895 | 
            +
            The `use_to_json` option is used for maximum compatibility, most importantly
         | 
| 896 | 
            +
            when using rails `ActiveSupport::TimeWithZone` timestamps, which `oj` can not
         | 
| 897 | 
            +
            serialize natively. However, `use_to_json` adds performance overhead. You can
         | 
| 898 | 
            +
            change the json options via:
         | 
| 899 | 
            +
             | 
| 900 | 
            +
            ```ruby
         | 
| 901 | 
            +
            SearchFlip::Config[:json_options] = {
         | 
| 902 | 
            +
              mode: :custom,
         | 
| 903 | 
            +
              use_to_json: false,
         | 
| 904 | 
            +
              time_format: :xmlschema,
         | 
| 905 | 
            +
              bigdecimal_as_decimal: false
         | 
| 906 | 
            +
            }
         | 
| 907 | 
            +
            ```
         | 
| 908 | 
            +
             | 
| 909 | 
            +
            However, you then have to convert timestamps manually for indexation via e.g.:
         | 
| 910 | 
            +
             | 
| 911 | 
            +
            ```ruby
         | 
| 912 | 
            +
            class MyIndex
         | 
| 913 | 
            +
              # ...
         | 
| 914 | 
            +
             | 
| 915 | 
            +
              def self.serialize(model)
         | 
| 916 | 
            +
                {
         | 
| 917 | 
            +
                  # ...
         | 
| 918 | 
            +
             | 
| 919 | 
            +
                  created_at: model.created_at.to_time
         | 
| 920 | 
            +
                }
         | 
| 921 | 
            +
              end
         | 
| 922 | 
            +
            end
         | 
| 923 | 
            +
            ```
         | 
| 924 | 
            +
             | 
| 925 | 
            +
            Please check out the oj docs for more details.
         | 
| 926 | 
            +
             | 
| 885 927 | 
             
            ## Feature Support
         | 
| 886 928 |  | 
| 887 929 | 
             
            * for Elasticsearch 2.x, the delete-by-query plugin is required to delete
         | 
    
        data/lib/search_flip/config.rb
    CHANGED
    
    | @@ -5,6 +5,12 @@ module SearchFlip | |
| 5 5 | 
             
                bulk_limit: 1_000,
         | 
| 6 6 | 
             
                bulk_max_mb: 100,
         | 
| 7 7 | 
             
                auto_refresh: false,
         | 
| 8 | 
            -
                instrumenter: NullInstrumenter.new
         | 
| 8 | 
            +
                instrumenter: NullInstrumenter.new,
         | 
| 9 | 
            +
                json_options: {
         | 
| 10 | 
            +
                  mode: :custom,
         | 
| 11 | 
            +
                  use_to_json: true,
         | 
| 12 | 
            +
                  time_format: :xmlschema,
         | 
| 13 | 
            +
                  bigdecimal_as_decimal: false
         | 
| 14 | 
            +
                }
         | 
| 9 15 | 
             
              }
         | 
| 10 16 | 
             
            end
         | 
    
        data/lib/search_flip/json.rb
    CHANGED
    
    | @@ -1,22 +1,11 @@ | |
| 1 1 | 
             
            module SearchFlip
         | 
| 2 2 | 
             
              class JSON
         | 
| 3 | 
            -
                @default_options = {
         | 
| 4 | 
            -
                  mode: :custom,
         | 
| 5 | 
            -
                  use_to_json: true,
         | 
| 6 | 
            -
                  time_format: :xmlschema,
         | 
| 7 | 
            -
                  bigdecimal_as_decimal: false
         | 
| 8 | 
            -
                }
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def self.default_options
         | 
| 11 | 
            -
                  @default_options
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 3 | 
             
                def self.generate(obj)
         | 
| 15 | 
            -
                  Oj.dump(obj,  | 
| 4 | 
            +
                  Oj.dump(obj, SearchFlip::Config[:json_options])
         | 
| 16 5 | 
             
                end
         | 
| 17 6 |  | 
| 18 7 | 
             
                def self.parse(json)
         | 
| 19 | 
            -
                  Oj.load(json,  | 
| 8 | 
            +
                  Oj.load(json, SearchFlip::Config[:json_options])
         | 
| 20 9 | 
             
                end
         | 
| 21 10 | 
             
              end
         | 
| 22 11 | 
             
            end
         | 
    
        data/lib/search_flip/version.rb
    CHANGED