flex 0.4.2 → 1.0.1
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.
- data/LICENSE +1 -1
- data/README.md +46 -7
- data/VERSION +1 -1
- data/flex.gemspec +13 -19
- data/lib/flex.rb +66 -392
- data/lib/flex/api_stubs.rb +1268 -0
- data/lib/flex/api_templates/cluster_api.yml +94 -0
- data/lib/flex/api_templates/core_api.yml +202 -0
- data/lib/flex/api_templates/indices_api.yml +304 -0
- data/lib/flex/class_proxy/base.rb +20 -6
- data/lib/flex/class_proxy/templates.rb +97 -0
- data/lib/flex/class_proxy/templates/doc.rb +91 -0
- data/lib/flex/class_proxy/templates/search.rb +72 -0
- data/lib/flex/configuration.rb +17 -49
- data/lib/flex/deprecation.rb +153 -0
- data/lib/flex/errors.rb +2 -1
- data/lib/flex/http_clients/base.rb +15 -0
- data/lib/flex/http_clients/loader.rb +51 -0
- data/lib/flex/http_clients/patron.rb +9 -7
- data/lib/flex/http_clients/rest_client.rb +6 -8
- data/lib/flex/logger.rb +24 -3
- data/lib/flex/prog_bar.rb +11 -6
- data/lib/flex/rails.rb +1 -13
- data/lib/flex/result.rb +8 -2
- data/lib/flex/result/document.rb +42 -13
- data/lib/flex/result/multi_get.rb +24 -0
- data/lib/flex/result/search.rb +1 -24
- data/lib/flex/struct/array.rb +25 -0
- data/lib/flex/struct/hash.rb +105 -0
- data/lib/flex/{result/collection.rb → struct/paginable.rb} +16 -9
- data/lib/flex/struct/prunable.rb +60 -0
- data/lib/flex/struct/symbolize.rb +27 -0
- data/lib/flex/tasks.rb +26 -86
- data/lib/flex/template.rb +60 -120
- data/lib/flex/template/common.rb +42 -0
- data/lib/flex/template/logger.rb +66 -0
- data/lib/flex/template/partial.rb +12 -15
- data/lib/flex/template/search.rb +6 -6
- data/lib/flex/template/slim_search.rb +1 -1
- data/lib/flex/template/tags.rb +19 -9
- data/lib/flex/templates.rb +20 -0
- data/lib/flex/utility_methods.rb +80 -89
- data/lib/flex/utils.rb +68 -25
- data/lib/flex/variables.rb +55 -4
- data/lib/tasks.rake +28 -0
- metadata +61 -85
- data/bin/flexes +0 -174
- data/lib/flex/api_methods.yml +0 -108
- data/lib/flex/class_proxy/loader.rb +0 -102
- data/lib/flex/class_proxy/model.rb +0 -45
- data/lib/flex/class_proxy/model_sync.rb +0 -23
- data/lib/flex/class_proxy/related_model.rb +0 -23
- data/lib/flex/instance_proxy/base.rb +0 -29
- data/lib/flex/instance_proxy/model.rb +0 -102
- data/lib/flex/instance_proxy/related_model.rb +0 -7
- data/lib/flex/loader.rb +0 -18
- data/lib/flex/manager.rb +0 -61
- data/lib/flex/model.rb +0 -24
- data/lib/flex/rails/engine.rb +0 -23
- data/lib/flex/rails/helper.rb +0 -16
- data/lib/flex/related_model.rb +0 -16
- data/lib/flex/result/indifferent_access.rb +0 -11
- data/lib/flex/result/source_document.rb +0 -63
- data/lib/flex/result/source_search.rb +0 -32
- data/lib/flex/structure/indifferent_access.rb +0 -44
- data/lib/flex/structure/mergeable.rb +0 -21
- data/lib/flex/template/base.rb +0 -41
- data/lib/flex/template/info.rb +0 -68
- data/lib/generators/flex/setup/setup_generator.rb +0 -48
- data/lib/generators/flex/setup/templates/flex_config.yml +0 -16
- data/lib/generators/flex/setup/templates/flex_dir/es.rb.erb +0 -18
- data/lib/generators/flex/setup/templates/flex_dir/es.yml.erb +0 -19
- data/lib/generators/flex/setup/templates/flex_dir/es_extender.rb.erb +0 -17
- data/lib/generators/flex/setup/templates/flex_initializer.rb.erb +0 -44
- data/lib/tasks/index.rake +0 -17
- data/test/flex.irt +0 -143
- data/test/flex/configuration.irt +0 -53
- data/test/irt_helper.rb +0 -12
@@ -1,15 +1,29 @@
|
|
1
1
|
module Flex
|
2
2
|
module ClassProxy
|
3
|
-
|
4
3
|
class Base
|
5
|
-
|
4
|
+
|
6
5
|
attr_accessor :variables
|
7
6
|
|
8
|
-
def initialize(
|
9
|
-
@
|
10
|
-
|
7
|
+
def initialize(context, vars={})
|
8
|
+
@variables = Vars.new({:context => context,
|
9
|
+
:index => Conf.variables[:index]}.merge(vars))
|
11
10
|
end
|
12
|
-
end
|
13
11
|
|
12
|
+
def init; end
|
13
|
+
|
14
|
+
[:context, :index, :type].each do |meth|
|
15
|
+
define_method meth do
|
16
|
+
variables[meth]
|
17
|
+
end
|
18
|
+
define_method :"#{meth}=" do |val|
|
19
|
+
variables[meth] = val
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def refresh_index
|
24
|
+
Flex.refresh_index :index => index
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
14
28
|
end
|
15
29
|
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module Flex
|
2
|
+
module ClassProxy
|
3
|
+
module Templates
|
4
|
+
|
5
|
+
attr_reader :templates, :partials
|
6
|
+
include Doc
|
7
|
+
include Search
|
8
|
+
|
9
|
+
def init
|
10
|
+
@sources = []
|
11
|
+
@templates = {}
|
12
|
+
@partials = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
# accepts a path to a file or YAML string
|
16
|
+
def load_source_for(klass, source, source_vars)
|
17
|
+
if source.nil? || source !~ /\n/m
|
18
|
+
paths = [ "#{Conf.flex_dir}/#{source}.yml",
|
19
|
+
"#{Conf.flex_dir}/#{Utils.class_name_to_type(context.name)}.yml",
|
20
|
+
source.to_s ]
|
21
|
+
source = paths.find {|p| File.exist?(p)}
|
22
|
+
end
|
23
|
+
raise ArgumentError, "expected a string, got #{source.inspect}" \
|
24
|
+
unless source.is_a?(String)
|
25
|
+
@sources << [klass, source, source_vars]
|
26
|
+
do_load_source(klass, source, source_vars)
|
27
|
+
# fixes the legacy empty stubs, which should call super instead
|
28
|
+
@templates.keys.each do |name|
|
29
|
+
meta_context.send(:define_method, name){|*vars| super *vars }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# loads a Generic Template source
|
34
|
+
def load_source(source=nil, source_vars=nil)
|
35
|
+
load_source_for(Template, source, source_vars)
|
36
|
+
end
|
37
|
+
|
38
|
+
# loads a Search Template source
|
39
|
+
def load_search_source(source=nil, source_vars=nil)
|
40
|
+
load_source_for(Template::Search, source, source_vars)
|
41
|
+
end
|
42
|
+
|
43
|
+
# loads a SlimSearch Template source
|
44
|
+
def load_slim_search_source(source=nil, source_vars=nil)
|
45
|
+
load_source_for(Template::SlimSearch, source, source_vars)
|
46
|
+
end
|
47
|
+
|
48
|
+
# reloads the sources (useful in the console and used internally)
|
49
|
+
def reload!
|
50
|
+
@sources.each {|k,s,v| do_load_source(k,s,v)}
|
51
|
+
end
|
52
|
+
|
53
|
+
def wrap(*methods, &block)
|
54
|
+
methods = templates.keys if methods.empty?
|
55
|
+
methods.each do |name|
|
56
|
+
raise MissingTemplateMethodError, "#{name} is not a template method" \
|
57
|
+
unless templates.include?(name)
|
58
|
+
meta_context.send(:define_method, name, &block)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def render(name, *vars)
|
63
|
+
templates[name].render(*vars)
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def do_load_source(klass, source, source_vars)
|
69
|
+
source = Utils.erb_process(source) unless source.match("\n") # skips non-path
|
70
|
+
hash = Utils.parse_source(source)
|
71
|
+
Utils.delete_allcaps_keys(hash).each do |name, args|
|
72
|
+
define_template klass, name, args, source_vars
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def define_template(klass, name, args, source_vars)
|
77
|
+
name = name.to_sym
|
78
|
+
args = [args] unless args.is_a?(Array)
|
79
|
+
if name.to_s[0] == '_' # partial
|
80
|
+
partials[name] = Template::Partial.new(*args).setup(self, name)
|
81
|
+
else
|
82
|
+
templates[name] = klass.new(*args).setup(self, name, source_vars)
|
83
|
+
context::FlexTemplateMethods.send(:define_method, name) do |*vars|
|
84
|
+
raise ArgumentError, "#{flex.context}.#{name} expects a list of Hashes, got #{vars.map(&:inspect).join(', ')}" \
|
85
|
+
unless vars.all?{|i| i.nil? || i.is_a?(Hash)}
|
86
|
+
flex.render(name,*vars)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def meta_context
|
92
|
+
class << context; self end
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module Flex
|
2
|
+
module ClassProxy
|
3
|
+
module Templates
|
4
|
+
module Doc
|
5
|
+
|
6
|
+
def doc(*names)
|
7
|
+
names = templates.keys if names.empty?
|
8
|
+
doc = "\n"
|
9
|
+
names.each do |name|
|
10
|
+
next unless templates.include?(name)
|
11
|
+
block = ''
|
12
|
+
temp = templates[name]
|
13
|
+
meth_call = [context, name].join('.')
|
14
|
+
block << <<-meth_call
|
15
|
+
########## #{meth_call} ##########
|
16
|
+
#{'-' * temp.class.to_s.length}
|
17
|
+
#{temp.class}
|
18
|
+
#{temp.to_source}
|
19
|
+
meth_call
|
20
|
+
temp.partials.each do |par_name|
|
21
|
+
par = partials[par_name]
|
22
|
+
block << <<-partial
|
23
|
+
#{'-' * par.class.to_s.length}
|
24
|
+
#{par.class}
|
25
|
+
#{par.to_source}
|
26
|
+
partial
|
27
|
+
end
|
28
|
+
block << "\nUsage:\n"
|
29
|
+
block << build_usage(meth_call, temp)
|
30
|
+
block << "\n "
|
31
|
+
doc << block.split("\n").map{|l| '# ' + l}.join("\n")
|
32
|
+
doc << <<-meth.gsub(/^ {14}/m,'')
|
33
|
+
|
34
|
+
def #{meth_call}(*vars)
|
35
|
+
## this is a stub, used for reference
|
36
|
+
super
|
37
|
+
end
|
38
|
+
|
39
|
+
meth
|
40
|
+
end
|
41
|
+
puts doc
|
42
|
+
end
|
43
|
+
|
44
|
+
def usage(name)
|
45
|
+
meth_call = [context, name].join('.')
|
46
|
+
puts build_usage(meth_call, templates[name])
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def build_usage(meth_call, temp)
|
52
|
+
variables = temp.instance_eval do
|
53
|
+
interpolate
|
54
|
+
@base_variables.deep_merge @host_flex && @host_flex.variables, @temp_variables
|
55
|
+
end
|
56
|
+
all_tags = temp.tags + temp.partials
|
57
|
+
return meth_call if all_tags.size == 0
|
58
|
+
lines = all_tags.map do |t|
|
59
|
+
comments = 'partial' if t.to_s[0] == '_'
|
60
|
+
line = ['', t.inspect]
|
61
|
+
line + if variables.has_key?(t)
|
62
|
+
["#{variables[t].inspect},", comments_to_s(comments)]
|
63
|
+
else
|
64
|
+
["#{to_code(t)},", comments_to_s(comments, 'required')]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
lines.sort! { |a,b| b[3] <=> a[3] }
|
68
|
+
lines.first[0] = meth_call
|
69
|
+
lines.last[2].chop!
|
70
|
+
max = lines.transpose.map { |c| c.map(&:length).max }
|
71
|
+
lines.map { |line| "%-#{max[0]}s %-#{max[1]}s => %-#{max[2]}s %s" % line }.join("\n")
|
72
|
+
end
|
73
|
+
|
74
|
+
def comments_to_s(*comments)
|
75
|
+
comments = comments.compact
|
76
|
+
return '' if comments == []
|
77
|
+
"# #{comments.join(' ')}"
|
78
|
+
end
|
79
|
+
|
80
|
+
def to_code(name)
|
81
|
+
keys = name.to_s.split('.').map{|s| s =~ /^[0..9]+$/ ? s.to_i : s.to_sym}
|
82
|
+
code = keys.shift.to_s
|
83
|
+
return code if keys.empty?
|
84
|
+
keys.each{|k| code << "[#{k.inspect}]"}
|
85
|
+
code
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module Flex
|
2
|
+
module ClassProxy
|
3
|
+
module Templates
|
4
|
+
module Search
|
5
|
+
|
6
|
+
def define_search(name, source, source_vars=nil)
|
7
|
+
args = Utils.parse_source(source)
|
8
|
+
send :define_template, Template::Search, name, args, source_vars
|
9
|
+
end
|
10
|
+
|
11
|
+
# http://www.elasticsearch.org/guide/reference/api/multi-search.html
|
12
|
+
# requests can be an array of arrays: [[:template1, variable_hash1], [template2, variable_hash2]]
|
13
|
+
# or a hash {:template1 => variable_hash1, template2 => variable_hash2}
|
14
|
+
# The variables are an hash of variables that will be used to render the msearch template
|
15
|
+
# the array of result is at <result>.responses
|
16
|
+
def multi_search(requests, *variables)
|
17
|
+
requests = requests.map { |name, vars| [name, vars] } if requests.is_a?(Hash)
|
18
|
+
lines = requests.map { |name, vars| templates[name].to_msearch(vars) }.join()
|
19
|
+
template = Template.new('GET', '/<<index>>/<<type>>/_msearch') # no setup flex so raw_result
|
20
|
+
template.send(:do_render, *variables, :data => lines) do |http_response|
|
21
|
+
responses = []
|
22
|
+
es_response = MultiJson.decode(http_response.body)
|
23
|
+
es_response['responses'].each_with_index do |raw_result, i|
|
24
|
+
name, vars = requests[i]
|
25
|
+
int = templates[name].interpolate(vars, strict=true)
|
26
|
+
result = Result.new(templates[name], int[:vars], http_response, raw_result)
|
27
|
+
responses << result.to_flex_result
|
28
|
+
end
|
29
|
+
es_response['responses'] = responses
|
30
|
+
def es_response.responses
|
31
|
+
self['responses']
|
32
|
+
end
|
33
|
+
es_response
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# implements search_type=scan (http://www.elasticsearch.org/guide/reference/api/search/search-type.html)
|
38
|
+
def scan_search(template, *vars, &block)
|
39
|
+
user_raw_result = vars.any?{|v| v[:raw_result]}
|
40
|
+
scroll = '5m'
|
41
|
+
search_vars = Vars.new({:params => { :search_type => 'scan',
|
42
|
+
:scroll => scroll,
|
43
|
+
:size => 50 },
|
44
|
+
:raw_result => true}, *vars)
|
45
|
+
search_temp = template.is_a?(Flex::Template) ? template : templates[template]
|
46
|
+
|
47
|
+
scroll_vars = Vars.new({:params => { :scroll => scroll },
|
48
|
+
:raw_result => true}, variables, *vars)
|
49
|
+
scroll_temp = Flex::Template.new( :get,
|
50
|
+
'/_search/scroll',
|
51
|
+
nil,
|
52
|
+
scroll_vars )
|
53
|
+
search_res = search_temp.render search_vars
|
54
|
+
scroll_id = search_res['_scroll_id']
|
55
|
+
while (result = scroll_temp.render(:data => scroll_id)) do
|
56
|
+
break if result['hits']['hits'].empty?
|
57
|
+
scroll_id = result['_scroll_id']
|
58
|
+
result.variables[:raw_result] = user_raw_result
|
59
|
+
block.call result.to_flex_result(force=true)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# implements search_type=count (http://www.elasticsearch.org/guide/reference/api/search/search-type.html)
|
64
|
+
def count_search(template, *vars)
|
65
|
+
template = template.is_a?(Flex::Template) ? template : templates[template]
|
66
|
+
template.render Vars.new({:params => {:search_type => 'count'}, :raw_result => true}, *vars)
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/flex/configuration.rb
CHANGED
@@ -1,57 +1,25 @@
|
|
1
1
|
module Flex
|
2
|
-
class Struct < OpenStruct
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
Configuration = OpenStruct.new :result_extenders => [ Result::Document,
|
4
|
+
Result::Search,
|
5
|
+
Result::MultiGet,
|
6
|
+
Result::Bulk ],
|
7
|
+
:logger => Logger.new(STDERR),
|
8
|
+
:variables => Vars.new( :index => nil,
|
9
|
+
:type => nil,
|
10
|
+
:params => {},
|
11
|
+
:no_pruning => [] ),
|
12
|
+
:config_file => './config/flex.yml',
|
13
|
+
:flex_dir => './flex',
|
14
|
+
:http_client => HttpClients::Loader.new_http_client
|
7
15
|
|
8
|
-
|
16
|
+
# shorter alias
|
17
|
+
Conf = Configuration
|
9
18
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
if Gem::Specification.respond_to?(:find_all_by_name)
|
14
|
-
case
|
15
|
-
# terrible way to check whether a gem is available.
|
16
|
-
# Gem.available? was just perfect: that's probably the reason it has been deprecated!
|
17
|
-
# https://github.com/rubygems/rubygems/issues/176
|
18
|
-
when Gem::Specification::find_all_by_name('patron').any?
|
19
|
-
require 'patron'
|
20
|
-
Flex::HttpClients::Patron
|
21
|
-
when Gem::Specification::find_all_by_name('rest-client').any?
|
22
|
-
require 'rest-client'
|
23
|
-
Flex::HttpClients::RestClient
|
24
|
-
end
|
25
|
-
else
|
26
|
-
case
|
27
|
-
when Gem.available?('patron')
|
28
|
-
require 'patron'
|
29
|
-
Flex::HttpClients::Patron
|
30
|
-
when Gem.available?('rest-client')
|
31
|
-
require 'rest-client'
|
32
|
-
Flex::HttpClients::RestClient
|
33
|
-
end
|
19
|
+
Conf.instance_eval do
|
20
|
+
def configure
|
21
|
+
yield self
|
34
22
|
end
|
35
23
|
end
|
36
|
-
private :load_http_client
|
37
24
|
|
38
|
-
Configuration = Struct.new :base_uri => 'http://localhost:9200',
|
39
|
-
:result_extenders => [ Flex::Result::Document,
|
40
|
-
Flex::Result::SourceDocument,
|
41
|
-
Flex::Result::Search,
|
42
|
-
Flex::Result::SourceSearch,
|
43
|
-
Flex::Result::Bulk ],
|
44
|
-
:logger => Logger.new(STDERR),
|
45
|
-
:variables => Variables.new( :index => nil,
|
46
|
-
:type => nil,
|
47
|
-
:no_pruning => [] ),
|
48
|
-
:flex_models => [],
|
49
|
-
:config_file => './config/flex.yml',
|
50
|
-
:flex_dir => './flex',
|
51
|
-
:http_client => load_http_client,
|
52
|
-
:http_client_options => {},
|
53
|
-
:debug => false,
|
54
|
-
:debug_result => true,
|
55
|
-
:debug_to_curl => false,
|
56
|
-
:raise_proc => proc{|response| response.status >= 400}
|
57
25
|
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
module Flex
|
2
|
+
|
3
|
+
module Deprecation
|
4
|
+
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def warn(old, new, called=1)
|
8
|
+
message = "#{old} is deprecated in favour of #{new}, and will be removed in a next version "
|
9
|
+
message << "(called at: #{caller[called]})" if called
|
10
|
+
Conf.logger.warn message
|
11
|
+
end
|
12
|
+
|
13
|
+
module Module
|
14
|
+
def extended(obj)
|
15
|
+
Deprecation.warn(self, self::NEW_MODULE, 2)
|
16
|
+
obj.extend self::NEW_MODULE
|
17
|
+
end
|
18
|
+
def included(base)
|
19
|
+
Deprecation.warn(self, self::NEW_MODULE, 2)
|
20
|
+
base.send :include, self::NEW_MODULE
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
### Deprecation of Flex methods ###
|
27
|
+
|
28
|
+
def info(*names)
|
29
|
+
Deprecation.warn 'Flex.info', 'Flex.doc'
|
30
|
+
doc *names
|
31
|
+
end
|
32
|
+
|
33
|
+
def process_bulk(options={})
|
34
|
+
Deprecation.warn 'Flex.process_bulk(:collection => collection)', 'Flex.post_bulk_collection(collection, options)'
|
35
|
+
post_bulk_collection(options.delete(:collection), options)
|
36
|
+
end
|
37
|
+
|
38
|
+
def import_collection(collection, options={})
|
39
|
+
Deprecation.warn 'Flex.import_collection', 'Flex.post_bulk_collection'
|
40
|
+
post_bulk_collection(collection, options.merge(:action => 'index'))
|
41
|
+
end
|
42
|
+
|
43
|
+
def delete_collection(collection, options={})
|
44
|
+
Deprecation.warn 'Flex.delete_collection(collection)', 'Flex.post_bulk_collection(collection, :action => "delete")'
|
45
|
+
post_bulk_collection(collection, options.merge(:action => 'delete'))
|
46
|
+
end
|
47
|
+
|
48
|
+
def bulk(*vars)
|
49
|
+
Deprecation.warn 'Flex.bulk(:lines => lines_bulk_string)', 'Flex.post_bulk_string(:bulk_string => lines_bulk_string)'
|
50
|
+
vars = Vars.new(*vars)
|
51
|
+
post_bulk_string(:bulk_string => vars[:lines])
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
### Deprecation of Configuration methods ###
|
56
|
+
|
57
|
+
Configuration.instance_eval do
|
58
|
+
# temprary deprecation warnings
|
59
|
+
def base_uri
|
60
|
+
Deprecation.warn 'Flex::Configuration.base_uri', 'Flex::Configuration.http_client.base_uri'
|
61
|
+
http_client.base_uri
|
62
|
+
end
|
63
|
+
def base_uri=(val)
|
64
|
+
Deprecation.warn 'Flex::Configuration.base_uri=', 'Flex::Configuration.http_client.base_uri='
|
65
|
+
http_client.base_uri = val
|
66
|
+
end
|
67
|
+
def http_client_options
|
68
|
+
Deprecation.warn 'Flex::Configuration.http_client_options', 'Flex::Configuration.http_client.options'
|
69
|
+
http_client.options
|
70
|
+
end
|
71
|
+
def http_client_options=(val)
|
72
|
+
Deprecation.warn 'Flex::Configuration.http_client_options=', 'Flex::Configuration.http_client.options='
|
73
|
+
http_client.options = val
|
74
|
+
end
|
75
|
+
def raise_proc
|
76
|
+
Deprecation.warn 'Flex::Configuration.raise_proc', 'Flex::Configuration.http_client.raise_proc'
|
77
|
+
http_client.raise_proc
|
78
|
+
end
|
79
|
+
def raise_proc=(val)
|
80
|
+
Deprecation.warn 'Flex::Configuration.raise_proc=', 'Flex::Configuration.http_client.raise_proc='
|
81
|
+
http_client.raise_proc = val
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
class Variables
|
87
|
+
def add(*hashes)
|
88
|
+
Deprecation.warn 'Flex::Variables#add', 'Flex::Variables#deep_merge!'
|
89
|
+
replace deep_merge(*hashes)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
module Struct::Mergeable
|
95
|
+
def add(*hashes)
|
96
|
+
Deprecation.warn 'Flex::Variables#add', 'Variables#deep_merge!'
|
97
|
+
replace deep_merge(*hashes)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
module Loader
|
103
|
+
NEW_MODULE = Templates
|
104
|
+
extend Deprecation::Module
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
module ClassProxy::Loader
|
109
|
+
NEW_MODULE = ClassProxy::Templates
|
110
|
+
extend Deprecation::Module
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
module ClassProxy::Templates
|
115
|
+
module Doc
|
116
|
+
def info(*names)
|
117
|
+
Deprecation.warn 'flex.info', 'flex.doc'
|
118
|
+
doc *names
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
module Result::Collection
|
125
|
+
NEW_MODULE = Struct::Paginable
|
126
|
+
extend Deprecation::Module
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
module Model
|
131
|
+
def self.included(base)
|
132
|
+
if defined?(Flex::ModelIndexer)
|
133
|
+
Deprecation.warn 'Flex::Model', 'Flex::ModelIndexer'
|
134
|
+
base.send :include, Flex::ModelIndexer
|
135
|
+
else
|
136
|
+
raise NotImplementedError, %(Flex does not include "Flex::Model" anymore. Please, require the "flex-models" gem, and include "Flex::ModelIndexer" instead.)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
module RelatedModel
|
143
|
+
def self.included(base)
|
144
|
+
if defined?(Flex::ModelSyncer)
|
145
|
+
Deprecation.warn 'Flex::RelatedModel', 'Flex::ModelSyncer'
|
146
|
+
base.send :include, Flex::ModelSyncer
|
147
|
+
else
|
148
|
+
raise NotImplementedError, %(Flex does not include "Flex::RelatedModel" anymore. Please, require the "flex-models" gem, and include "Flex::ModelSyncer" instead.)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|