lib/google/cloud/spanner.rb in google-cloud-spanner-1.13.1 vs lib/google/cloud/spanner.rb in google-cloud-spanner-1.14.0
- old
+ new
@@ -32,11 +32,11 @@
# Spanner Documentation](https://cloud.google.com/spanner/docs/).
#
# See {file:OVERVIEW.md Spanner Overview}.
#
module Spanner
- # rubocop:disable Metrics/MethodLength
+ # rubocop:disable Metrics/MethodLength,Metrics/AbcSize
##
# Creates a new object for connecting to the Spanner service.
# Each call creates a new connection.
#
@@ -66,28 +66,44 @@
# @param [String] project Alias for the `project_id` argument. Deprecated.
# @param [String] keyfile Alias for the `credentials` argument.
# Deprecated.
# @param [String] emulator_host Spanner emulator host. Optional.
# If the param is nil, uses the value of the `emulator_host` config.
+ # @param [String] lib_name Library name. This will be added as a prefix
+ # to the API call tracking header `x-goog-api-client` with provided
+ # lib version for telemetry. Optional. For example prefix looks like
+ # `spanner-activerecord/0.0.1 gccl/1.13.1`. Here,
+ # `spanner-activerecord/0.0.1` is provided custom library name and
+ # version and `gccl/1.13.1` represents the Cloud Spanner Ruby library
+ # with version.
+ # @param [String] lib_version Library version. This will be added as a
+ # prefix to the API call tracking header `x-goog-api-client` with
+ # provided lib name for telemetry. Optional. For example prefix look like
+ # `spanner-activerecord/0.0.1 gccl/1.13.1`. Here,
+ # `spanner-activerecord/0.0.1` is provided custom library name and
+ # version and `gccl/1.13.1` represents the Cloud Spanner Ruby library
+ # with version.
#
# @return [Google::Cloud::Spanner::Project]
#
# @example
# require "google/cloud/spanner"
#
# spanner = Google::Cloud::Spanner.new
#
def self.new project_id: nil, credentials: nil, scope: nil, timeout: nil,
client_config: nil, endpoint: nil, project: nil, keyfile: nil,
- emulator_host: nil
+ emulator_host: nil, lib_name: nil, lib_version: nil
project_id ||= (project || default_project_id)
scope ||= configure.scope
timeout ||= configure.timeout
client_config ||= configure.client_config
endpoint ||= configure.endpoint
credentials ||= (keyfile || default_credentials(scope: scope))
emulator_host ||= configure.emulator_host
+ lib_name ||= configure.lib_name
+ lib_version ||= configure.lib_version
if emulator_host
credentials = :this_channel_is_insecure
endpoint = emulator_host
else
@@ -104,16 +120,17 @@
raise ArgumentError, "project_id is missing" if project_id.empty?
Spanner::Project.new(
Spanner::Service.new(
project_id, credentials,
- host: endpoint, timeout: timeout, client_config: client_config
+ host: endpoint, timeout: timeout, client_config: client_config,
+ lib_name: lib_name, lib_version: lib_version
)
)
end
- # rubocop:enable Metrics/MethodLength
+ # rubocop:enable Metrics/MethodLength,Metrics/AbcSize
##
# Configure the Google Cloud Spanner library.
#
# The following Spanner configuration parameters are supported:
@@ -131,9 +148,15 @@
# behavior of the API client.
# * `endpoint` - (String) Override of the endpoint host name, or `nil`
# to use the default endpoint.
# * `emulator_host` - (String) Host name of the emulator. Defaults to
# `ENV["SPANNER_EMULATOR_HOST"]`.
+ # * `lib_name` - (String) Override the lib name , or `nil`
+ # to use the default lib name without prefix in agent tracking
+ # header.
+ # * `lib_version` - (String) Override the lib version , or `nil`
+ # to use the default version lib name without prefix in agent
+ # tracking header.
#
# @return [Google::Cloud::Config] The configuration object the
# Google::Cloud::Spanner library uses.
#
def self.configure