flex 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/LICENSE +20 -0
  2. data/README.md +20 -0
  3. data/VERSION +1 -0
  4. data/flex.gemspec +43 -0
  5. data/lib/flex.rb +418 -0
  6. data/lib/flex/api_methods.yml +108 -0
  7. data/lib/flex/class_proxy.rb +12 -0
  8. data/lib/flex/configuration.rb +57 -0
  9. data/lib/flex/errors.rb +42 -0
  10. data/lib/flex/http_clients/patron.rb +27 -0
  11. data/lib/flex/http_clients/rest_client.rb +38 -0
  12. data/lib/flex/loader.rb +116 -0
  13. data/lib/flex/logger.rb +16 -0
  14. data/lib/flex/model.rb +24 -0
  15. data/lib/flex/model/class_proxy.rb +45 -0
  16. data/lib/flex/model/instance_proxy.rb +101 -0
  17. data/lib/flex/model/manager.rb +67 -0
  18. data/lib/flex/rails.rb +12 -0
  19. data/lib/flex/rails/engine.rb +23 -0
  20. data/lib/flex/rails/helper.rb +16 -0
  21. data/lib/flex/related_model.rb +16 -0
  22. data/lib/flex/related_model/class_proxy.rb +23 -0
  23. data/lib/flex/related_model/class_sync.rb +23 -0
  24. data/lib/flex/related_model/instance_proxy.rb +28 -0
  25. data/lib/flex/result.rb +18 -0
  26. data/lib/flex/result/bulk.rb +20 -0
  27. data/lib/flex/result/collection.rb +51 -0
  28. data/lib/flex/result/document.rb +38 -0
  29. data/lib/flex/result/indifferent_access.rb +11 -0
  30. data/lib/flex/result/search.rb +51 -0
  31. data/lib/flex/result/source_document.rb +63 -0
  32. data/lib/flex/result/source_search.rb +32 -0
  33. data/lib/flex/structure/indifferent_access.rb +44 -0
  34. data/lib/flex/structure/mergeable.rb +21 -0
  35. data/lib/flex/tasks.rb +141 -0
  36. data/lib/flex/template.rb +187 -0
  37. data/lib/flex/template/base.rb +29 -0
  38. data/lib/flex/template/info.rb +50 -0
  39. data/lib/flex/template/partial.rb +31 -0
  40. data/lib/flex/template/search.rb +30 -0
  41. data/lib/flex/template/slim_search.rb +13 -0
  42. data/lib/flex/template/tags.rb +46 -0
  43. data/lib/flex/utility_methods.rb +140 -0
  44. data/lib/flex/utils.rb +59 -0
  45. data/lib/flex/variables.rb +11 -0
  46. data/lib/generators/flex/setup/setup_generator.rb +51 -0
  47. data/lib/generators/flex/setup/templates/flex_config.yml +16 -0
  48. data/lib/generators/flex/setup/templates/flex_dir/es.rb.erb +18 -0
  49. data/lib/generators/flex/setup/templates/flex_dir/es.yml.erb +19 -0
  50. data/lib/generators/flex/setup/templates/flex_dir/es_extender.rb.erb +17 -0
  51. data/lib/generators/flex/setup/templates/flex_initializer.rb.erb +44 -0
  52. data/lib/tasks/index.rake +23 -0
  53. data/test/flex.irt +143 -0
  54. data/test/flex/configuration.irt +53 -0
  55. data/test/irt_helper.rb +12 -0
  56. metadata +211 -0
@@ -0,0 +1,16 @@
1
+ # ANCHORS litheral key: it will not be used as template
2
+ # you can store here fragments of structures to reuse below
3
+ ANCHORS:
4
+ -
5
+
6
+ # This is a dynamic index name The settings and mapping below will work with any index.
7
+ # The default index name generated by Flex is usually <application_name>_<environment>,
8
+ # but you may have changed it in the initializers/flex.rb or you can hardcode it if you prefer.
9
+ <%= Flex::Configuration.variables[:index] %>:
10
+
11
+ settings:
12
+ number_of_shards: 5
13
+ number_of_replicas: 1
14
+
15
+ # add your custom mappings here
16
+ mappings: {}
@@ -0,0 +1,18 @@
1
+ # inspect the methods loaded in this module and their usage
2
+ # in the rails console by just typing:
3
+ # >> puts <%= @class_name %>.flex.info
4
+ # you can eventually restrict the info to a single method by pasing its name:
5
+ # >> puts <%= @class_name %>.flex.info :search
6
+ # see the detailed doc for this feature at https://github.com/ddnexus/flex/wiki/Selfdoc
7
+
8
+ module <%= @class_name %>
9
+
10
+ extend self
11
+
12
+ include Flex::Loader
13
+ flex.load_search_source
14
+
15
+ # you may need to add more method here, usually wrapper methods
16
+ # that use one of the autogenerated methods from the loaded templates
17
+
18
+ end
@@ -0,0 +1,19 @@
1
+ # Add here your search queries
2
+ # see the detailed Source documentation at https://github.com/ddnexus/flex/wiki/Sources
3
+
4
+
5
+ # ANCHORS litheral key: it will not be used as template
6
+ # you can store here fragments of queries to reuse in the templates below
7
+ ANCHORS:
8
+ -
9
+
10
+ # this is a a basic template loaded in your class <%= @class_name %>
11
+ # it defines the 'q' tag. You can check its usage from the rails console by just typing:
12
+ # >> puts <%= @class_name %>.flex.info
13
+ # You can eventually restrict the info to a single method by pasing its name:
14
+ # >> puts <%= @class_name %>.flex.info :search
15
+ # see the detailed doc for this feature at https://github.com/ddnexus/flex/wiki/Selfdoc
16
+ search:
17
+ - query:
18
+ query_string: <<q= "*">>
19
+
@@ -0,0 +1,17 @@
1
+ # see the detailed Extenders documentation at https://github.com/ddnexus/flex/wiki/Extenders
2
+
3
+ module <%= @extender_name %>
4
+
5
+ # set this method to restrict this extender to certain types of results
6
+ # see the other Flex extenders for reference (https://github.com/ddnexus/flex/tree/master/lib/flex/result)
7
+ def self.should_extend?(response)
8
+ false
9
+ end
10
+
11
+ # adds your methods
12
+
13
+ def an_extending_method
14
+ # self is the structure returned by ES
15
+ end
16
+
17
+ end
@@ -0,0 +1,44 @@
1
+ # see the detailed Configuration documentation at https://github.com/ddnexus/flex/wiki/Configuration
2
+
3
+ Flex::Configuration.configure do |config|
4
+
5
+ # you MUST add your indexed model names here
6
+ config.flex_models = %w[ ]
7
+
8
+ # Add the your result extenders here
9
+ config.result_extenders |= [ <%= "#{@extender_name}" %> ]
10
+
11
+ # Add the default variables here
12
+ # see also the details Variables documentation at https://github.com/ddnexus/flex/wiki/Variables
13
+ # config.variables.add :index => 'my_index',
14
+ # :type => 'project',
15
+ # :anything => 'anything
16
+
17
+ # The custom url of your ElasticSearch server
18
+ # config.base_uri = 'http://localhost:9200'
19
+
20
+ # Set it to false to skip the logging of the debug infos
21
+ # config.debug = true
22
+
23
+ # Debug info are actually valid curl commands
24
+ # config.debug_to_curl = false
25
+
26
+ # The custom logger you want Flex to use. Default Rails.logger
27
+ # config.logger = Logger.new(STDERR)
28
+
29
+ # Custom config file path
30
+ # config.config_file = '/custom/path/to/flex.yml',
31
+
32
+ # Custom flex dir path
33
+ # config.flex_dir = '/custom/path/to/flex',
34
+
35
+ # The custom http_client you may want to implement
36
+ # config.http_client = 'Your::Client'
37
+
38
+ # The options passed to the http_client. They are client specific.
39
+ # config.http_client_options = {:timeout => 5}
40
+
41
+ # Experimental: checks the response and return a boolean (should raise?)
42
+ # config.raise_proc = proc{|response| response.status >= 400}
43
+
44
+ end
@@ -0,0 +1,23 @@
1
+ require defined?(Rails) ? 'flex/rails' : 'flex'
2
+ require 'flex/tasks'
3
+
4
+ env = defined?(Rails) ? :environment : []
5
+
6
+ namespace :flex do
7
+
8
+ desc 'imports from an ActiveRecord or Mongoid models'
9
+ task(:import => env) { Flex::Tasks.import_models }
10
+
11
+ desc 'create indices from the Flex::Configuration.config_file file'
12
+ task(:create_index => env) { Flex::Tasks.create_indices }
13
+
14
+ desc 'alias for flex:create_index'
15
+ task(:create_indices => env) { Flex::Tasks.create_indices }
16
+
17
+ desc 'destroy indices in the Flex::Configuration.config_file file'
18
+ task(:delete_index => env) { Flex::Tasks.delete_indices }
19
+
20
+ desc 'alias for flex:delete_index'
21
+ task(:delete_indices => env) { Flex::Tasks.delete_indices }
22
+
23
+ end
data/test/flex.irt ADDED
@@ -0,0 +1,143 @@
1
+ desc 'check version'
2
+ Flex::VERSION
3
+ _eql?( "0.1" )
4
+
5
+ desc 'Flex responds to all public methods'
6
+ methods = [ # api methods from yaml
7
+ :indices_exists, :create_index, :put_index, :post_index, :get_settings, :put_mapping, :get_mapping, :delete_mapping,
8
+ :delete_index, :delete_by_query, :bulk, :count, :stats, :store, :put_store, :post_store, :remove, :get, :multi_get,
9
+ # utility_methods
10
+ :configuration, :config, :search, :slim_search, :HEAD, :GET, :PUT, :POST, :DELETE, :json2yaml, :yaml2json,
11
+ :process_bulk, :import_collection, :delete_collection,
12
+ # other methods
13
+ :exist? ]
14
+ defined, not_defined = methods.partition {|k| Flex.respond_to?(k)}
15
+ defined
16
+ _eql?( methods )
17
+
18
+
19
+ desc 'create index with PUT (explicit index)'
20
+ Flex.delete_index(:index => INDEX_NAME) if Flex.exist?(:index => INDEX_NAME)
21
+ Flex.put_index(:index => INDEX_NAME)
22
+ _eql?( {"ok"=>true, "acknowledged"=>true} )
23
+
24
+
25
+ # in the irt_helper.rb we set the default index to INDEX_NAME and Flex.reload! so we don't need to pass any explicit index
26
+
27
+ desc 'create index with PUT'
28
+ Flex.delete_index if Flex.exist?
29
+ Flex.put_index
30
+ _eql?( {"ok"=>true, "acknowledged"=>true} )
31
+
32
+
33
+ desc "index #{INDEX_NAME} exist"
34
+ Flex.exist?
35
+ _eql?( true )
36
+
37
+
38
+ desc "index #{unexistent = 'flex_unexistent_index'} doesn't exist'"
39
+ Flex.exist?(:index => unexistent)
40
+ _eql?( false )
41
+
42
+
43
+ desc 'create_index with POST (explicit index)'
44
+ Flex.delete_index(:index => TMP_INDEX_NAME) if Flex.exist?(:index => TMP_INDEX_NAME)
45
+ Flex.post_index(:index => TMP_INDEX_NAME)
46
+ _eql?( {"ok"=>true, "acknowledged"=>true} )
47
+ Flex.delete_index(:index => TMP_INDEX_NAME)
48
+
49
+
50
+ desc 'get_settings'
51
+ Flex.get_settings
52
+ _eql?( {"flex_test_index"=>{"settings"=>{"index.number_of_replicas"=>"1", "index.number_of_shards"=>"5", "index.version.created"=>"190299"}}} )
53
+
54
+
55
+ desc 'put_mapping'
56
+ Flex.put_mapping(:type => 'type1',
57
+ :properties => {'test1' => {'type' => 'string'} })
58
+ _eql?( {"ok"=>true, "acknowledged"=>true} )
59
+
60
+
61
+ desc 'check mapping'
62
+ Flex.get_mapping
63
+ _eql?( {"flex_test_index"=>{"type1"=>{"properties"=>{"test1"=>{"type"=>"string"}}}}} )
64
+
65
+
66
+ desc 'delete_mapping'
67
+ Flex.delete_mapping(:type => 'type1')
68
+ _eql?( {"ok"=>true} )
69
+
70
+
71
+ desc 'delete_index'
72
+ Flex.delete_index
73
+ _eql?( {"ok"=>true, "acknowledged"=>true} )
74
+
75
+
76
+ desc 'check delete_index'
77
+ Flex.exist?
78
+ _eql?( false )
79
+
80
+
81
+ desc 'store'
82
+ Flex.store(:type => 'type1', :id => 1, :data => {'a'=>2, 'b'=>3})
83
+ _eql?( {"ok"=>true, "_index"=>"flex_test_index", "_type"=>"type1", "_id"=>"1", "_version"=>1} )
84
+
85
+
86
+ desc 'get'
87
+ Flex.get(:type => 'type1', :id => 1)
88
+ _eql?( {"_index"=>"flex_test_index", "_type"=>"type1", "_id"=>"1", "_version"=>1, "exists"=>true, "_source"=>{"a"=>2, "b"=>3}} )
89
+
90
+
91
+ desc 'count (may fail in test, but it\'s ok)'
92
+ Flex.count :type => 'type1'
93
+ _eql?( {"count"=>1, "_shards"=>{"total"=>5, "successful"=>5, "failed"=>0}} )
94
+
95
+
96
+ desc 'remove'
97
+ Flex.remove(:type => 'type1', :id => 1)
98
+ _eql?( {"ok"=>true, "found"=>true, "_index"=>"flex_test_index", "_type"=>"type1", "_id"=>"1", "_version"=>2} )
99
+
100
+
101
+ desc 'check remove'
102
+ Flex.get(:type => 'type1', :id => 1, :raise => false)
103
+ _eql?( nil )
104
+
105
+
106
+ desc 'delete_by_query'
107
+ # in Patron the :data option is not working, since currently patron cannot send data with a DELETE request
108
+ Flex.store(:type => 'type1', :id => 1, :data => {'a'=>2, 'myfield'=>'pippo'})
109
+ Flex.delete_by_query :type => 'type1', :params => {:q => 'myfield:pippo'}
110
+ _eql?( {"ok"=>true, "_indices"=>{"flex_test_index"=>{"_shards"=>{"total"=>5, "successful"=>5, "failed"=>0}}}} )
111
+
112
+
113
+ desc 'strict_existence doesn\'t affect exist'
114
+ Flex.get(:type => 'type1', :id => 1, :raise => false)
115
+ _eql?( nil )
116
+
117
+
118
+ desc 'json2yaml'
119
+ struct = {:a => {:b => [3,4,5]}}
120
+ yaml = Flex.json2yaml MultiJson.encode(struct)
121
+ _eql? <<EOS
122
+ ---
123
+ a:
124
+ b:
125
+ - 3
126
+ - 4
127
+ - 5
128
+ EOS
129
+
130
+ desc 'yaml2json'
131
+ Flex.yaml2json(yaml)
132
+ _eql?( "{\"a\":{\"b\":[3,4,5]}}" )
133
+
134
+
135
+ desc "exist with HEAD"
136
+ Flex.HEAD "/#{INDEX_NAME}"
137
+ # empty result object
138
+ _eql?( true )
139
+
140
+ desc "doesn't exist with HEAD'"
141
+ Flex.HEAD "/unexistent_flex_index"
142
+ _eql?( false )
143
+
@@ -0,0 +1,53 @@
1
+
2
+ desc 'Flex::Configuration responds to all public methods'
3
+ methods = [ # regular methods from class
4
+ :configure,
5
+ # data methods
6
+ :base_uri, :result_extenders, :logger, :variables, :flex_models, :config_file, :flex_dir,
7
+ :http_client, :http_client_options, :debug, :debug_to_curl, :raise_proc]
8
+
9
+ defined, not_defined = methods.partition {|k| Flex::Configuration.respond_to?(k)}
10
+ defined
11
+ _eql?( methods )
12
+
13
+
14
+ desc 'block set variables'
15
+ Flex::Configuration.configure do |conf|
16
+ conf.base_uri = 'http://something:123'
17
+ end
18
+ Flex::Configuration.base_uri
19
+ _eql?( "http://something:123" )
20
+
21
+
22
+ desc 'direct set variables'
23
+ Flex::Configuration.test = false
24
+ Flex::Configuration.test
25
+ _eql?( false )
26
+
27
+
28
+ desc 'new configuration object'
29
+ Flex::Configuration.configure do |conf|
30
+ conf.custom = 23
31
+ conf.base_uri = 'http://other_host:9200'
32
+ end
33
+
34
+
35
+ desc 'custom arg accessor'
36
+ Flex::Configuration.custom
37
+ _eql?( 23 )
38
+
39
+
40
+ desc 'modified configuration'
41
+ Flex::Configuration.base_uri
42
+ _eql?( 'http://other_host:9200' )
43
+
44
+
45
+ desc 'add custom configuration with accessor'
46
+ Flex::Configuration.new_custom = 3
47
+ _eql?( 3 )
48
+
49
+
50
+ desc 'custom option is in object'
51
+ Flex::Configuration.new_custom
52
+ _eql?( 3 )
53
+
@@ -0,0 +1,12 @@
1
+ $:.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'flex'
3
+
4
+ INDEX_NAME = 'flex_test_index'
5
+ TMP_INDEX_NAME = 'flex_tmp_test_index'
6
+
7
+ INDEX_NAME_1 = 'flex_test_index_1'
8
+ INDEX_NAME_2 = 'flex_test_index_2'
9
+
10
+ Flex.create_index(:index => INDEX_NAME) unless Flex.exist?(:index => INDEX_NAME)
11
+ Flex.config.variables[:index] = INDEX_NAME
12
+ Flex.reload!
metadata ADDED
@@ -0,0 +1,211 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Domizio Demichelis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: multi_json
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.3.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: progressbar
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.11.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.11.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: prompter
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.1.5
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.1.5
62
+ - !ruby/object:Gem::Dependency
63
+ name: irt
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.2.10
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.2.10
78
+ - !ruby/object:Gem::Dependency
79
+ name: patron
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.4.18
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.4.18
94
+ - !ruby/object:Gem::Dependency
95
+ name: rest-client
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 1.6.7
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.6.7
110
+ description: ! 'Flex is a complete ruby client for ElasticSearch. It introduces a
111
+ new way to send any kind of request (not just search queries) to the ES server,
112
+ and to manage any kind of response. You can transparently integrate it with ActiveRecord
113
+ and MongoId models with or without automatic synchronization, with or without Rails.
114
+ It is fast and efficient, easy to use and customize.
115
+
116
+ '
117
+ email: dd.nexus@gmail.com
118
+ executables: []
119
+ extensions: []
120
+ extra_rdoc_files:
121
+ - README.md
122
+ files:
123
+ - LICENSE
124
+ - README.md
125
+ - VERSION
126
+ - flex.gemspec
127
+ - lib/flex.rb
128
+ - lib/flex/api_methods.yml
129
+ - lib/flex/class_proxy.rb
130
+ - lib/flex/configuration.rb
131
+ - lib/flex/errors.rb
132
+ - lib/flex/http_clients/patron.rb
133
+ - lib/flex/http_clients/rest_client.rb
134
+ - lib/flex/loader.rb
135
+ - lib/flex/logger.rb
136
+ - lib/flex/model.rb
137
+ - lib/flex/model/class_proxy.rb
138
+ - lib/flex/model/instance_proxy.rb
139
+ - lib/flex/model/manager.rb
140
+ - lib/flex/rails.rb
141
+ - lib/flex/rails/engine.rb
142
+ - lib/flex/rails/helper.rb
143
+ - lib/flex/related_model.rb
144
+ - lib/flex/related_model/class_proxy.rb
145
+ - lib/flex/related_model/class_sync.rb
146
+ - lib/flex/related_model/instance_proxy.rb
147
+ - lib/flex/result.rb
148
+ - lib/flex/result/bulk.rb
149
+ - lib/flex/result/collection.rb
150
+ - lib/flex/result/document.rb
151
+ - lib/flex/result/indifferent_access.rb
152
+ - lib/flex/result/search.rb
153
+ - lib/flex/result/source_document.rb
154
+ - lib/flex/result/source_search.rb
155
+ - lib/flex/structure/indifferent_access.rb
156
+ - lib/flex/structure/mergeable.rb
157
+ - lib/flex/tasks.rb
158
+ - lib/flex/template.rb
159
+ - lib/flex/template/base.rb
160
+ - lib/flex/template/info.rb
161
+ - lib/flex/template/partial.rb
162
+ - lib/flex/template/search.rb
163
+ - lib/flex/template/slim_search.rb
164
+ - lib/flex/template/tags.rb
165
+ - lib/flex/utility_methods.rb
166
+ - lib/flex/utils.rb
167
+ - lib/flex/variables.rb
168
+ - lib/generators/flex/setup/setup_generator.rb
169
+ - lib/generators/flex/setup/templates/flex_config.yml
170
+ - lib/generators/flex/setup/templates/flex_dir/es.rb.erb
171
+ - lib/generators/flex/setup/templates/flex_dir/es.yml.erb
172
+ - lib/generators/flex/setup/templates/flex_dir/es_extender.rb.erb
173
+ - lib/generators/flex/setup/templates/flex_initializer.rb.erb
174
+ - lib/tasks/index.rake
175
+ - test/flex.irt
176
+ - test/flex/configuration.irt
177
+ - test/irt_helper.rb
178
+ homepage: http://github.com/ddnexus/flex
179
+ licenses: []
180
+ post_install_message: ! "________________________________________________________________________________\n\n
181
+ \ INSTALLATION NOTES\n________________________________________________________________________________\n\nIn
182
+ order to use Flex, a supported http-client must be installed on this system.\n\nThe
183
+ suported http-client gems are \"patron\" and \"rest-client\".\n\nYou should install
184
+ \"patron\" (a libcurl based gem developed in C) for best\nperformances, or install
185
+ \"rest-client\" if you cannot use libcurl on your system.\n\nAs an alternative you
186
+ could eventually develop your own http-client interface\nand set the Flex::Configuration.http_client
187
+ option.\n\n________________________________________________________________________________\n"
188
+ rdoc_options:
189
+ - --charset=UTF-8
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ required_rubygems_version: !ruby/object:Gem::Requirement
199
+ none: false
200
+ requirements:
201
+ - - ! '>='
202
+ - !ruby/object:Gem::Version
203
+ version: 1.3.6
204
+ requirements: []
205
+ rubyforge_project:
206
+ rubygems_version: 1.8.24
207
+ signing_key:
208
+ specification_version: 3
209
+ summary: Ruby Client for ElasticSearch
210
+ test_files: []
211
+ has_rdoc: