Agile Central: TFS Connector - ERROR : RallyEIF::WRK::TFSConnection.initialize - undefined method `gsub' for {}:Hash

Document ID : KB000106236
Last Modified Date : 13/07/2018
Show Technical Document Details
Question:
The connector does not initialize. How can we resolve?

[2018-07-12 21:02:12 Z]   ANY : RallyEIF::WRK::RallyConnection.initialize - Initializing Rally connection version 4.11.0
[2018-07-12 21:02:12 Z]  INFO : RallyEIF::WRK::RallyConnection.initialize - Rally Web Services version v2.0
[2018-07-12 21:02:12 Z]   ANY : RallyEIF::WRK::TFSConnection.initialize - Initializing  connection version 4.8.0
[2018-07-12 21:02:12 Z]  WARN : RallyEIF::WRK::Connector.block in read_field_handlers - The use of a RallyReferenceFieldHandler for the Iteration field has been deprecated and the field handler for it will not be registered
[2018-07-12 21:02:12 Z]  WARN : RallyEIF::WRK::Connector.block in read_field_handlers - The use of a RallyReferenceFieldHandler for the Release field has been deprecated and the field handler for it will not be registered
[2018-07-12 21:02:12 Z]  WARN : RallyEIF::WRK::Connector.block in read_field_handlers - The use of a RallyReferenceFieldHandler for the Project field has been deprecated and the field handler for it will not be registered
[2018-07-12 21:02:12 Z]  INFO : RallyEIF::WRK::Connector.initialize - Ruby platform x64-mingw32
[2018-07-12 21:02:12 Z]  INFO : RallyEIF::WRK::Connector.initialize - Ruby version 2.2.6
[2018-07-12 21:02:12 Z]  INFO : RallyEIF::WRK::TFSConnection.connect - Connecting to https://tfs.alogent.com:443/{}/DefaultCollection ...
[2018-07-12 21:02:12 Z] ERROR : RallyEIF::WRK::TFSConnection.initialize - undefined method `gsub' for {}:Hash
[2018-07-12 21:02:12 Z]  INFO : RallyEIF::WRK::TFSConnection.disconnect - Disconnected from TFS
Answer:
The cause is an invalid <instance> in the connector's config file.

The hint is this line you see in the log:
https://tfs.alogent.com:443/{}/DefaultCollection

The config file in this case include this line which basically has a blank value for the instance:
<instance></instance>

A blank value is not allowed and results in the {} which you see in that log line. This causes the http URL to fail.

A "no value" is actually supposed to be just a slash character /
This will cause this log line to be:
https://tfs.alogent.com:443///DefaultCollection

How to resolve:
1. If this is for a VSTS connector then it does not use an instance. For VSTS connector, please set your config file to have:
<instance>/</instance>

2. If for FTS connector then:
a. If you actually have an instance (which is for On-Premise customers) then use the instance's name in the config file:
<instance>INSTANCE_NAME</instance>

b. If you do not have an instance (for SaaS customers) then use a slash for an empty value and define this in the config file:
<instance>/</instance>