Como Crear Nuestro Primer Programa con Ruby – Parte 1
En esta página:
Ruby es un Lenguaje de Programación limpio y sencillo que nos permite crear aplicaciones o programas básicos, hasta programas más complejos, pero para los usuarios nuevos crear un programa con Ruby puedes ser algo complicado, eso es normal ya que están iniciándose con este lenguaje, en este Post voy a enseñarte como crear un programa con el Lenguaje de Programación Ruby, vamos con ello.
Partes
- Parte 1
- Parte 2 (Final – Código Fuente en GitHub)
Antes de continuar te invito a leer los siguiente artículos:
- Que es Ruby y Otros Detalles
- Los métodos attr_* de Ruby
- Tipos de Operadores en Ruby (2.7.1) – Parte 1
- Puedes leer más Posts en la categoría Ruby
Asimismo te invito a escuchar el Podcast: “Que Hacer Cuando Estamos En Casa”:
Spotify: | Sound Cloud: |
Bien ahora continuemos con el Post: Como Crear Nuestro Primer Programa con Ruby – Parte 1.
Para poder trabajar con el Lenguaje de Programación Ruby, tenemos que tenerlo instalado en nuestra computadora, puedes leer el artículo Que es Ruby y Otros Detalles, en la parte final del artículo te explico como instalar Ruby.
Creación del Programa
Los programas normalmente se ejecutan en la consola de comandos de ruby, pero lo que quiero es crear un programa que tenga una interfaz gráfica de usuario (GUI) o interfaz visual, para crear este tipo de interfaces podemos hacer uso de diferentes herramientas o frameworks GUI como shoes, gtk2, fxruby, etc.
Yo usare FXRuby que al igual que otras herramientas GUI me provee de un conjunto de métodos y herramientas para crear interfaces de usuario, tu puedes optar por cualquiera de las herramientas que desees (shoes, gtk2, fxruby, etc.), yo para este tutorial usaré FXRuby.
Para instalar FXRuby ejecuto el siguiente comando.
1 2 3 4 5 6 7 8 |
gem install fxruby Successfully installed fxruby-1.6.42-x64-mingw32 Parsing documentation for fxruby-1.6.42-x64-mingw32 Done installing documentation for fxruby after 2 seconds 1 gem installed |
Ahora pasaré a crear mi programa.
Voy a crear un archivo con la extensión Ruby (.rb) en un determinado directorio en mi computadora, yo crearé un archivo con el nombre programa.rb en un directorio con el nombre ruby_programa_ejecutable tu le puedes poner el nombre que desees al archivo y al directorio, no hay problema.
El programa que voy a crear es un simple lector de archivos HTML, no es un navegador, si no un simple lector que visualiza el código HTML, bien abro el archivo programa.rb y le agrego lo siguiente (He colocado comentarios en el código para explicar que hace cada parte del código).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
#!/usr/bin/env ruby # Importamos dependendecias de 'FXruby' require 'fox16' require 'fox16/scintilla' include Fox class ScintillaTest < FXMainWindow def initialize(app) # Llamamos al método que inicializa la clase base super(app, "Lector Simple de Archivos HTML", nil, nil, DECOR_ALL, 0, 0, 600, 800) # Creamos una barra de menú menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X) # Creamos una barra de estado FXStatusBar.new(self, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER) # El widget Scintilla de FXRuby ocupa el resto del espacio sunkenFrame = FXHorizontalFrame.new(self, FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y) @scintilla = FXScintilla.new(sunkenFrame, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y) # Opción del Menú para Abrir archivos HTML en una ventana de selección de archivos HTML filemenu = FXMenuPane.new(self) FXMenuCommand.new(filemenu, "&Abrir\tCtl-O\tOpen...").connect(SEL_COMMAND) { openDialog = FXFileDialog.new(self, "Abrir Archivo") openDialog.selectMode = SELECTFILE_EXISTING openDialog.patternList = ["Archivos HTML (*.html)"] if openDialog.execute != 0 loadFile(openDialog.filename) end } # Creamos el menú Archivo FXMenuTitle.new(menubar, "&Archivo", nil, filemenu) # Opción del Menú para para Salir del Programa FXMenuCommand.new(filemenu, "&Salir\tCtl-Q\tQuit application.", nil, getApp(), FXApp::ID_QUIT, 0) # Opciones del Menu Ayuda helpmenu = FXMenuPane.new(self) FXMenuCommand.new(helpmenu, "&Web...").connect(SEL_COMMAND) { # Abrimos el enlace en el navegador url = "https://nubecolectiva.com/" if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/ system "start #{url}" elsif RbConfig::CONFIG['host_os'] =~ /darwin/ system "open #{url}" elsif RbConfig::CONFIG['host_os'] =~ /linux|bsd/ system "xdg-open #{url}" end } # Creamos el Menú Ayuda FXMenuTitle.new(menubar, "&Ayuda", nil, helpmenu, LAYOUT_RIGHT) end # Abrimos el archivo HTML def loadFile(filename) getApp().beginWaitCursor do text = File.open(filename, "r").read @scintilla.setText(text) end end # Creamos el espacio para el lector de archivos HTML def create super show(PLACEMENT_SCREEN) end end if __FILE__ == $0 # Construimos la aplicación application = FXApp.new("ScintillaTest", "FoxTest") # Creamos la ventana para la aplicación ScintillaTest.new(application) # Creamos la aplicación application.create # Corremos la aplicación application.run end |
Entonces si abro mi archivo programa.rb me carga la interface gráfica de usuario (GUI) de mi programa. Yo lo abro con doble clic porque estoy usando windows.
Bien hasta aquí esta primera parte en donde hemos instalado la herramienta FXRuby y creado el código del programa del simple lector que visualiza el código HTML.
Nota (s)
- En la parte 2 y última crearemos una versión ejecutable de nuestro programa.
- El código y comandos compartidos en este tutorial pueden quedar obsoletos o quedar vigentes, esto no depende de mi, si no de los desarrolladores que dan soporte a Ruby y a FXRuby.
- No olvides que debemos utilizar la tecnología para hacer cosas buenas por el mundo.
Síguenos en las Redes Sociales para que no te pierdas nuestros próximos contenidos.
- Ruby
- 11-10-2020
- 16-10-2020
- Crear un Post - Eventos Devs - Foro
Social
Redes Sociales (Developers)
Redes Sociales (Digital)