Ir al contenido principal

Configurar los SDKs

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

Opciones​

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

OpciónRubyNode.jsPythonPor defecto
API keyapi_keyapiKeyapi_keyninguna — obligatoria (Python recurre a BIBLEQL_API_KEY)
Endpointapi_urlapiUrlapi_urlRuby/Node: una URL alojada en Render, no bibleql.org. Python: https://bibleql.org/graphql
Traducción de respaldodefault_translationdefaultTranslationdefault_translationeng-web
Tiempo de esperatimeout (segundos)timeout (milisegundos)timeout (segundos)30s / 30000ms / 30s

Fíjate en que el tiempo de espera va en milisegundos en Node y en segundos en los otros dos.

Fija siempre el endpoint explícitamente en Ruby y Node

Esos 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. El cliente de Python ya usa el endpoint canónico por defecto.

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. (La única excepción es semantic_search en Python: ignora el valor por defecto y deja que la API elija una traducción con embeddings.)

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.