Ir al contenido principal

Configurar los SDKs

Ambos clientes se pueden configurar una vez de forma global, o por instancia. Esta página explica dónde va esa inicialización y qué opciones deberías fijar en lugar de heredar.

Opciones

Ambos SDKs aceptan las mismas cuatro cosas, con nombres propios de cada lenguaje.

OpciónRubyNode.jsPor defecto
API keyapi_keyapiKeyninguna — obligatoria
Endpointapi_urlapiUrluna URL alojada en Render, no bibleql.org
Traducción de respaldodefault_translationdefaultTranslationeng-web
Tiempo de esperatimeout (segundos)timeout (milisegundos)30s / 30000ms

Fíjate en que la unidad del tiempo de espera es distinta entre ambos.

Fija siempre el endpoint explícitamente

Ambos SDKs apuntan hoy por defecto a un host alojado en Render en lugar de a https://bibleql.org/graphql. Si lo dejas sin configurar, tu tráfico va a otro sitio que no es el endpoint canónico. Fíjalo en tu inicializador.

Dónde inicializar

En una aplicación Rails, configúralo una sola vez en un inicializador:

config/initializers/bibleql.rb
require "bibleql"

BibleQL.configure do |config|
config.api_key = ENV.fetch("BIBLEQL_API_KEY")
config.api_url = "https://bibleql.org/graphql"
config.default_translation = "spa-rv1909"
config.timeout = 30
end

Y después, en cualquier parte de la aplicación:

BibleQL.client.passage("Juan 3:16")

Usar ENV.fetch sin valor por defecto es intencional: falla de forma ruidosa al arrancar si falta la key, en lugar de fallar en la primera petición en producción.

Usar las credenciales de Rails

Si guardas los secretos en config/credentials.yml.enc en lugar de en el entorno:

config/initializers/bibleql.rb
BibleQL.configure do |config|
config.api_key = Rails.application.credentials.bibleql!(:api_key)
config.api_url = "https://bibleql.org/graphql"
end

Edítalas con bin/rails credentials:edit:

bibleql:
api_key: bql_live_...

Clientes por instancia

La configuración global es cómoda pero compartida. Para una traducción distinta, otro tiempo de espera o un cliente aislado en los tests, créalo directamente:

client = BibleQL::Client.new(
api_key: ENV.fetch("BIBLEQL_API_KEY"),
api_url: "https://bibleql.org/graphql",
default_translation: "spa-rv1909"
)

Un cliente por instancia ignora la configuración global, lo que lo convierte en la mejor opción para los tests: no hay estado global que reiniciar entre ejemplos.

Ruby sin Rails

No hay directorio de inicializadores, así que configúralo una vez al cargar, antes del primer uso:

require "bibleql"

BibleQL.configure do |config|
config.api_key = ENV.fetch("BIBLEQL_API_KEY")
config.api_url = "https://bibleql.org/graphql"
end

Elegir una traducción por defecto

default_translation / defaultTranslation solo se aplica cuando una llamada omite la traducción. No restringe nada: cualquier llamada puede pasar otra distinta.

Configúrala con la que tu aplicación muestre más a menudo. Si sirves varios idiomas, es preferible pasar translation explícitamente en cada llamada, para que el comportamiento no dependa de una configuración escrita en otro sitio.

Tiempos de espera

Los valores por defecto (30 segundos) son generosos para casi todas las queries. Dos cosas que conviene saber:

  • semanticSearch llama a un servicio externo de embeddings y es la query más lenta de la API. Si la usas dentro de una petición de usuario, un tiempo de espera más corto con un plan alternativo es mejor que una página colgada.
  • Las páginas grandes de concordance tardan más que buscar un versículo. Reduce first antes de subir el tiempo de espera.

Verificar tu configuración

Una query económica que no toca texto bíblico:

translations = BibleQL.client.translations
puts "#{translations.size} traducciones disponibles"

Si la key es incorrecta recibirás un error de autenticación de inmediato — consulta Errores para ver cómo se ve cada fallo, y SDKs para la clase de excepción a la que corresponde cada uno.

Usa una key de pruebas en local

Apunta el entorno de desarrollo a una key bql_test_. Producción rechaza las keys de entorno de pruebas, así que una key filtrada desde un portátil o desde los logs de CI no puede gastar tu cuota real. Consulta API Keys.