stretchy-model 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a955580b683d3dc991c7a1f92a5a9508fd10a4f9e8a116c2c92150ae4fdd43a3
4
- data.tar.gz: 30262c4a0d4e8d5e43a74ab707b3e501d8e5e627be16600687526885b4520cf3
3
+ metadata.gz: a1709205b5fe75817fe79c5047b6f4d3531257cf8a3118f84d8fa4b92adb8932
4
+ data.tar.gz: 1add1b8c78f9c27362d31e0f1f8c141a429af4b6176b7d521e32e8a3e9230039
5
5
  SHA512:
6
- metadata.gz: ce944998d1e6ae225f85fa7ecbccea8f940e3fcee99c8450b79f89b3138bedcddec7b69d62de8285983c21dbc4dc068c4fa42157d94484065a8948c118c9bd95
7
- data.tar.gz: 465d02c93b645b480bc4e627d4323d557ab6574dbefc2efc83de453aa246d38785ccb09cebf8d651e3f345d68e851e1197f32314bec84d13a379320dc468c3eb
6
+ metadata.gz: cf690ed5affe0224370f50e5208a6fcd0a91e611460fecf3f9a024464b0c87fa9b2718932fefca49c4ad9d587c4cc956b3490738fd794176f35d8f180dc16998
7
+ data.tar.gz: bc518187e999e3e989332612294ec8152bcc673fd5c025683e1170e8549491d8f8f3b578d4feb82a8fc4b564811f625eaae21fa5b754f0cd8fc7e36ae136c744
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- stretchy
1
+ stretchy-model
2
2
  ===
3
3
 
4
4
  <p>
@@ -112,11 +112,11 @@ Blanket (6.322ms) curl -X GET 'http://localhost:9200/blankets/_search?size=1' -d
112
112
 
113
113
  Install the gem and add to the application's Gemfile by executing:
114
114
 
115
- $ bundle add stretchy
115
+ $ bundle add stretchy-model
116
116
 
117
117
  If bundler is not being used to manage dependencies, install the gem by executing:
118
118
 
119
- $ gem install stretchy
119
+ $ gem install stretchy-model
120
120
 
121
121
  ## Development
122
122
 
@@ -14,7 +14,7 @@ module Rails
14
14
  end
15
15
 
16
16
  def search_with_instrumentation!(query_or_definition, options={})
17
- ActiveSupport::Notifications.instrument "search.elasticsearch",
17
+ ActiveSupport::Notifications.instrument "search.stretchy",
18
18
  name: "Search",
19
19
  klass: self.base_class.to_s,
20
20
  search: {index: self.index_name, body: query_or_definition }.merge(options) do
@@ -2,27 +2,21 @@ module Stretchy
2
2
  module Instrumentation
3
3
 
4
4
  class Railtie < ::Rails::Railtie
5
- include ActionView::Helpers::NumberHelper
6
- def time_diff(start, finish)
7
- begin
8
- ((finish.to_time - start.to_time) * 1000).to_s(:rounded, precision: 5, strip_insignificant_zeros: true)
9
- rescue
10
- number_with_precision((finish.to_time - start.to_time) * 1000, precision: 5, strip_insignificant_zeros: true)
11
- end
12
- end
13
5
 
14
- ActiveSupport::Notifications.subscribe 'query.elasticsearch' do |name, start, finish, id, payload|
15
- ::Rails.logger.debug([" #{payload[:name]}".bright, "(#{time_diff(start,finish)}ms)",payload[:query]].join(" ").color(:yellow))
16
- end
6
+ require 'rails/instrumentation/publishers'
7
+ ActiveSupport::Notifications.subscribe 'search.stretchy' do |name, start, finish, id, payload|
8
+ message = [
9
+ Rainbow(" #{payload[:klass]}").bright,
10
+ "(#{(finish.to_time - start.to_time).round(2)}ms)",
11
+ Stretchy::Utils.to_curl(payload[:klass].constantize, payload[:search])
12
+ ].join(" ")
13
+ ::Rails.logger.debug(Rainbow(message).color(:yellow))
14
+ end
17
15
 
18
- ActiveSupport::Notifications.subscribe 'cache.query.elasticsearch' do |name, start, finish, id, payload|
19
- ::Rails.logger.debug([" #{payload[:name]}".bright, "CACHE".color(:mediumpurple).bright ,"(#{time_diff(start,finish)}ms)", payload[:query]].join(" ").color(:yellow))
20
- end
21
-
22
- initializer 'stretchy.set_defaults' do
23
- config.elasticsearch_cache_store = :redis_store
24
- config.elasticsearch_expire_cache_in = 15.minutes
25
- end
16
+ # initializer 'stretchy.set_defaults' do
17
+ # config.elasticsearch_cache_store = :redis_store
18
+ # config.elasticsearch_expire_cache_in = 15.minutes
19
+ # end
26
20
 
27
21
  end
28
22
  end
@@ -33,7 +33,7 @@ module Stretchy
33
33
  end
34
34
 
35
35
  def gateway(&block)
36
- @gateway ||= Stretchy::Repository.create(index_name: index_name, klass: base_class)
36
+ @gateway ||= Stretchy::Repository.create(client: Stretchy.configuration.client, index_name: index_name, klass: base_class)
37
37
  block.arity < 1 ? @gateway.instance_eval(&block) : block.call(@gateway) if block_given?
38
38
  @gateway
39
39
  end
@@ -6,20 +6,20 @@ module Stretchy
6
6
 
7
7
  VALID_SCOPE_TYPES = [:current_scope, :ignore_default_scope]
8
8
 
9
- def initialize
10
- @registry = Hash.new { |hash, key| hash[key] = {} }
11
- end
9
+ # def initialize
10
+ self.registry = Hash.new { |hash, key| hash[key] = {} }
11
+ # end
12
12
 
13
13
  # Obtains the value for a given +scope_name+ and +variable_name+.
14
- def value_for(scope_type, variable_name)
14
+ def self.value_for(scope_type, variable_name)
15
15
  raise_invalid_scope_type!(scope_type)
16
- @registry[scope_type][variable_name]
16
+ self.registry[scope_type][variable_name]
17
17
  end
18
18
 
19
19
  # Sets the +value+ for a given +scope_type+ and +variable_name+.
20
- def set_value_for(scope_type, variable_name, value)
20
+ def self.set_value_for(scope_type, variable_name, value)
21
21
  raise_invalid_scope_type!(scope_type)
22
- @registry[scope_type][variable_name] = value
22
+ self.registry[scope_type][variable_name] = value
23
23
  end
24
24
 
25
25
  private
@@ -13,13 +13,13 @@ module Stretchy
13
13
  end
14
14
 
15
15
  def current_scope
16
- # ScopeRegistry.new.registry[:current_scope][base_class.to_s]
17
- ScopeRegistry.new.value_for(:current_scope, base_class.to_s)
16
+ ScopeRegistry.new.registry[:current_scope][base_class.to_s]
17
+ # ScopeRegistry.value_for(:current_scope, base_class.to_s)
18
18
  end
19
19
 
20
20
  def current_scope=(scope) #:nodoc:
21
- # ScopeRegistry.new.registry[:current_scope][base_class.to_s] = scope
22
- ScopeRegistry.new.set_value_for(:current_scope, base_class.to_s, scope)
21
+ ScopeRegistry.new.registry[:current_scope][base_class.to_s] = scope
22
+ # ScopeRegistry.set_value_for(:current_scope, base_class.to_s, scope)
23
23
  end
24
24
  end
25
25
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stretchy
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/stretchy.rb CHANGED
@@ -3,10 +3,8 @@ require 'zeitwerk'
3
3
  require 'amazing_print'
4
4
  require 'rainbow'
5
5
  require 'jbuilder'
6
- # require 'elasticsearch/rails'
7
6
  require 'elasticsearch/model'
8
7
  require 'elasticsearch/persistence'
9
- # require 'active_support/concern'
10
8
  require 'active_model'
11
9
  require 'active_support/all'
12
10
  require 'active_model/type/array'
@@ -16,19 +14,38 @@ ActiveModel::Type.register(:array, ActiveModel::Type::Array)
16
14
  ActiveModel::Type.register(:hash, ActiveModel::Type::Hash)
17
15
 
18
16
  require_relative "stretchy/version"
19
- require_relative "stretchy/instrumentation/railtie" if defined?(Rails)
17
+ require_relative "rails/instrumentation/railtie" if defined?(Rails)
20
18
 
21
19
  module Stretchy
22
20
  module Errors
23
21
  class QueryOptionMissing < StandardError; end
24
22
  end
25
23
 
24
+ class Configuration
25
+
26
+ attr_accessor :client
27
+
28
+ def initialize
29
+ @client = Elasticsearch::Client.new url: 'http://localhost:9200'
30
+ end
31
+
32
+ end
33
+
26
34
  class << self
27
35
  def logger
28
36
  @logger ||= Logger.new(STDOUT)
29
37
  end
38
+
39
+ def configuration
40
+ @configuration ||= Configuration.new
41
+ end
42
+
43
+ def configure
44
+ yield configuration
45
+ end
30
46
  end
31
47
 
48
+
32
49
  end
33
50
 
34
51
  loader = Zeitwerk::Loader.new
@@ -0,0 +1 @@
1
+ require_relative "../../lib/stretchy"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stretchy-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spencer Markowski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-04 00:00:00.000000000 Z
11
+ date: 2024-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -28,42 +28,42 @@ dependencies:
28
28
  name: elasticsearch-rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '7.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '7.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: elasticsearch-persistence
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '7.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '7.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: elasticsearch-model
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '7.1'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '7.1'
69
69
  - !ruby/object:Gem::Dependency
@@ -217,6 +217,7 @@ files:
217
217
  - lib/stretchy/utils.rb
218
218
  - lib/stretchy/version.rb
219
219
  - sig/stretchy.rbs
220
+ - stretchy-model/lib/stretchy-model.rb
220
221
  - stretchy.logo.png
221
222
  homepage: https://github.com/theablefew/stretchy
222
223
  licenses:
@@ -229,6 +230,7 @@ post_install_message:
229
230
  rdoc_options: []
230
231
  require_paths:
231
232
  - lib
233
+ - stretchy-model/lib
232
234
  required_ruby_version: !ruby/object:Gem::Requirement
233
235
  requirements:
234
236
  - - ">="