Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 5 additions & 9 deletions lib/pinecone.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@ class ConfigurationError < StandardError; end
class IndexNotFoundError < StandardError; end

class Configuration
attr_writer :api_key, :base_uri, :environment, :silence_deprecation_warnings
attr_accessor :host
DEFAULT_BASE_URI = "https://api.pinecone.io"

attr_writer :api_key, :environment, :silence_deprecation_warnings
attr_accessor :host, :base_uri

def initialize
@api_key = nil
@environment = nil
@base_uri = nil
@base_uri = DEFAULT_BASE_URI
@host = nil
@silence_deprecation_warnings = false
end
Expand All @@ -32,12 +34,6 @@ def api_key
raise ConfigurationError, "Pinecone API key not set"
end

def base_uri
return @base_uri if @base_uri

raise ConfigurationError, "Pinecone domain not set"
end

def environment
return @environment if @environment

Expand Down
2 changes: 1 addition & 1 deletion lib/pinecone/collection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ class Collection
parser Pinecone::ResponseParser

def initialize
self.class.base_uri "https://api.pinecone.io"
self.class.base_uri Pinecone.configuration.base_uri

@headers = {
"Content-Type" => "application/json",
Expand Down
2 changes: 1 addition & 1 deletion lib/pinecone/index.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ class Index
parser Pinecone::ResponseParser

def initialize
self.class.base_uri "https://api.pinecone.io"
self.class.base_uri Pinecone.configuration.base_uri
@headers = {
"Content-Type" => "application/json",
"Accept" => "application/json",
Expand Down
4 changes: 2 additions & 2 deletions lib/pinecone/vector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ def initialize(index_name = nil, host: nil)
@base_uri = if host.start_with?("http://", "https://")
host
elsif host.start_with?("localhost")
"http://#{host}" # Use HTTP for localhost
"http://#{host}"
else
"https://#{host}" # Use HTTPS for production hosts
"https://#{host}"
end
elsif index_name
# Legacy path: call describe_index
Expand Down
13 changes: 8 additions & 5 deletions spec/pinecone/index_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@
skip "Local database container not available" unless database_available?
end

let(:client) do
# Use local database container only
index_client = Pinecone::Index.new
index_client.class.base_uri "http://localhost:5080"
index_client
before(:each) do
Pinecone.configuration.base_uri = "http://localhost:5080"
end

after(:each) do
Pinecone.configuration.base_uri = Pinecone::Configuration::DEFAULT_BASE_URI
end

let(:client) { Pinecone::Index.new }
let(:valid_attributes) do
{
metric: "dotproduct",
Expand Down
14 changes: 2 additions & 12 deletions spec/support/local_container_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -80,21 +80,11 @@ def database_client
@database_client ||= begin
Pinecone.configure do |config|
config.api_key = "dummy-key"
config.base_uri = DATABASE_URL
config.silence_deprecation_warnings = true
end

# Create a client that can talk to the database emulator for control plane operations
client = Pinecone::Client.new
# Override the base_uri for control plane operations
Pinecone::Index.any_instance.define_singleton_method(:initialize) do
self.class.base_uri "http://#{DATABASE_HOST}"
@headers = {
"Content-Type" => "application/json",
"Accept" => "application/json",
"Api-Key" => "dummy-key"
}
end
client
Pinecone::Client.new
end
end

Expand Down
Loading