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