6 nov. 2018

Teoría - Usando programas, librerías y gemas

Usando programas, librerías y gemas

Desde Ruby podemos hacer un programa que con unas pocas líneas de código aprovechar determinados códigos escritos desde otros ficheros distintos al programa que estamos realizando.
Se pueden dar dos casos, que creemos un programa en Ruby que haga determinadas cosas y queramos usarlo en otro programa y/o, el segundo caso, que queramos utilizar determinadas capacidades que otras personas han escrito y que las comparten con todo el mundo para que se puedan usar como gemas en Ruby.

Vayamos paso por paso:

A) REQUIRE y LOAD:
require carga el programa desde el punto que se le pide, normalmente al principio del fichero, y load cada vez que se le llama.

Veamos ésto con mayor detalle.

Creamos un programa que usaremos en otros programas de ruby.
Creamos un programa con nombre saludo.rb y con éste contenido

# encoding: UTF-8
$saludo="Hola"

Creamos otro programa con nombre pregunta.rb y con éste contenido

# encoding: UTF-8
@ruta=Dir.pwd
require @ruta+'/saludo' #Esto es por Linux, en Windows sería +'\'

puts
puts "¿ Cómo te llamas ?"
$stdout.flush
Nombre=gets.chomp
puts
print $saludo, " ",Nombre
puts
puts

NOTA IMPORTANTE: 
Si estás escribiendo los programas fuera de una ruta por defecto del sistema coloca todos los ficheros en el mismo directorio y al llamar al fichero con require o load lo encontrará si le indicass en la línea misma su ubicación, así ;
@ruta=Dir.pwd
require @ruta+'\saludo'


Así, al ejecutar el programa pregunta, llama al programa saludo una vez. Tan sólo indicar que require llama una sola vez al programa pero load lo llama siempre que lo incluyamos en cada línea y hay que especificar su extensión, lo cual es práctico en el caso de que sea necesario.

creo un programa llamado asteriscos.rb con éste contenido:

puts "********************"

Ahora, un cuarto programa, llamado despedida.rb con éste contenido:

# encoding: UTF-8
@ruta=Dir.pwd
require @ruta+'/pregunta' #Esto es por Linux, en Windows sería +'\'
load @ruta+'/asteriscos.rb'

puts "Adios "+Nombre
load @ruta+'/asteriscos.rb'
puts "debajo iría el segundo require"
require @ruta+'/pregunta'
puts "que ya no se vuelve a ejecutar"

Y vemos que load carga el fichero allá donde lo queramos y cuantas veces queramos.

B) GEMAS: (o bibliotecas)
Las gemas son librerías externas que se pueden importar dentro de los programas y así ampliar el alcance del mismo.

Hay que declararlas al principio de código.

Hay que instalarlas desde el cmd o terminal mediante la secuencia:

gem install nombre_de_la_gema
También se puede buscar gemas mediante el comando:

gem search nombre_de_la_gema 

Nota: se pueden usar comodines en el nombre_de_la_gema y en Linux habrá que anteponer el comando sudo así: sudo gem ......

Hay servidores donde se alojan las gemas, y es allí donde las buscará.

Una vez instalada la gema se invocará mediante un require y todas sus funcionalidades quedarán al alcance de los programas que se generen, tan sólo hay que tener la precaución de que allí donde se ejecute ese programa, también esté instalada la gema.

Desde éste enlace oficial https://www.ruby-lang.org/es/libraries/ podrás encontrar mucha mayor y mekor información básica sobre éste capítulo de las gemas.

En esos servidores existen una gran cantidad de gemas o bibliotecas y cada una tiene sus cuestiones que hay que aprender, así que en entradas posteriores iré detallando algunas gemas que considero importantes, bien por cuestión pedagógica bien por cuestión práctica.