Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

246
Vistas
Por qué este simple código Ruby no funciona en la línea de comandos, pero sí al pegarlo en irb

Tengo el siguiente código:

ejemplo_código.rb

 class Foo def bar Timeout.timeout(0.5){ puts "Interupt this if it takes longer then 0.5 seconds" } end end foo = Foo.new() foo.bar

El ejemplo anterior funciona cuando lo pegas en irb, pero cuando lo colocas en un script y lo ejecutas así:

 ruby ./sample_code.rb

Dará el siguiente error.

 Traceback (most recent call last): 1: from ./irb_works_ruby_dont.rb:11:in `<main>' ./irb_works_ruby_dont.rb:4:in `bar': uninitialized constant Foo::Timeout (NameError)

¿Es esto un problema de tiempo de espera? ¿ irb carga algunos módulos que el comando ruby normal no carga? ¿Cómo hacer que el código funcione cuando se ejecuta como un script?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La explicación más probable es que IRB requiere tiempo de espera cuando inicia REPL, pero su archivo de script se ejecuta antes de que eso suceda. Puede solucionarlo simplemente solicitándolo:

 require 'timeout' class Foo def bar Timeout.timeout(0.5){ puts "Interupt this if it takes longer then 0.5 seconds" } end end foo = Foo.new foo.bar
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda