flex 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +20 -0
- data/README.md +20 -0
- data/VERSION +1 -0
- data/flex.gemspec +43 -0
- data/lib/flex.rb +418 -0
- data/lib/flex/api_methods.yml +108 -0
- data/lib/flex/class_proxy.rb +12 -0
- data/lib/flex/configuration.rb +57 -0
- data/lib/flex/errors.rb +42 -0
- data/lib/flex/http_clients/patron.rb +27 -0
- data/lib/flex/http_clients/rest_client.rb +38 -0
- data/lib/flex/loader.rb +116 -0
- data/lib/flex/logger.rb +16 -0
- data/lib/flex/model.rb +24 -0
- data/lib/flex/model/class_proxy.rb +45 -0
- data/lib/flex/model/instance_proxy.rb +101 -0
- data/lib/flex/model/manager.rb +67 -0
- data/lib/flex/rails.rb +12 -0
- data/lib/flex/rails/engine.rb +23 -0
- data/lib/flex/rails/helper.rb +16 -0
- data/lib/flex/related_model.rb +16 -0
- data/lib/flex/related_model/class_proxy.rb +23 -0
- data/lib/flex/related_model/class_sync.rb +23 -0
- data/lib/flex/related_model/instance_proxy.rb +28 -0
- data/lib/flex/result.rb +18 -0
- data/lib/flex/result/bulk.rb +20 -0
- data/lib/flex/result/collection.rb +51 -0
- data/lib/flex/result/document.rb +38 -0
- data/lib/flex/result/indifferent_access.rb +11 -0
- data/lib/flex/result/search.rb +51 -0
- data/lib/flex/result/source_document.rb +63 -0
- data/lib/flex/result/source_search.rb +32 -0
- data/lib/flex/structure/indifferent_access.rb +44 -0
- data/lib/flex/structure/mergeable.rb +21 -0
- data/lib/flex/tasks.rb +141 -0
- data/lib/flex/template.rb +187 -0
- data/lib/flex/template/base.rb +29 -0
- data/lib/flex/template/info.rb +50 -0
- data/lib/flex/template/partial.rb +31 -0
- data/lib/flex/template/search.rb +30 -0
- data/lib/flex/template/slim_search.rb +13 -0
- data/lib/flex/template/tags.rb +46 -0
- data/lib/flex/utility_methods.rb +140 -0
- data/lib/flex/utils.rb +59 -0
- data/lib/flex/variables.rb +11 -0
- data/lib/generators/flex/setup/setup_generator.rb +51 -0
- data/lib/generators/flex/setup/templates/flex_config.yml +16 -0
- data/lib/generators/flex/setup/templates/flex_dir/es.rb.erb +18 -0
- data/lib/generators/flex/setup/templates/flex_dir/es.yml.erb +19 -0
- data/lib/generators/flex/setup/templates/flex_dir/es_extender.rb.erb +17 -0
- data/lib/generators/flex/setup/templates/flex_initializer.rb.erb +44 -0
- data/lib/tasks/index.rake +23 -0
- data/test/flex.irt +143 -0
- data/test/flex/configuration.irt +53 -0
- data/test/irt_helper.rb +12 -0
- 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
|
+
|
data/test/irt_helper.rb
ADDED
@@ -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:
|