# Electron + Elm + Ruby

**URL:** <https://www.ruby-forum.com/t/electron-elm-ruby/245088>\
**Category:** IT\
**Created:** [September 25, 2016, 12:24pm UTC](https://www.ruby-forum.com/t/electron-elm-ruby/245088 "2016-09-25T12:24:22Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sadaf\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@Sadaf\_N](https://www.ruby-forum.com/u/Sadaf_N)\
**Post date:** [September 25, 2016, 12:24pm UTC](https://www.ruby-forum.com/t/electron-elm-ruby/245088/1 "2016-09-25T12:24:22Z")

</div>

Mentre stavo cercando di capire come usare Electron per creare le mie  
gui usando HTML,Javascript e Css e come back-end ruby, ho scoperto  
questo linguaggio [http://elm-lang.org/](http://elm-lang.org/), e mi ha incuriosito non poco,  
sia per la sua espressività sia perché è un linguaggio di programmazione  
funzionale, e anche per la sua velocità rispetto a Angular o React o Vue  
o altri framework jvascript.

La cosa che mi ha colpito è che compila in javascript e quindi gira lato  
client e questo mi ha aperto parecchie strade, posso creare sia gui  
locali sia programmi che girano sul web usando come back-end sinatra o  
rails o semplicemente con un Framework minimale e veloce come  
[http://www.rack-app.com/](http://www.rack-app.com/)

Allo stato attuale sto sperimentando l’accoppiata Electron+ELM+Ruby:

1. Creo la mia gui standard con Electron che mi renderizza il mio  
index.html

2. All’interno del mio index.html con   
inserisco il mio codice elm compilato in javascript che mi gestisce la  
creazione della mia interfaccia (ELM supporta il virtual DOM) e  
l’interazione tra le vari componenti attraverso MVU vedere  
[The Elm Architecture · An Introduction to Elm](https://guide.elm-lang.org/architecture/) al ruardo.  
Sempre attraverso elm creo la mia comunicazione lato server attraverso i  
websocket.

3. Come back-end utilizzo ruby e con rack in accoppiata con  
websocket-rack, gestisco le comunicazioni tra il server e il client  
attraverso dei semplici messaggi utilizzando i websocker devo  
sperimentare il passaggio di dati in formato json.

Vorrei dei vostri pareri, sia negativi sia positivi riguardo questo  
argomento e possibili sviluppi che si possono aprire.

I miei dubbi sono:

1. Cosa è meglio usare secondo voi per lo scambio di dati api,  
websocket, zeromq, mi interessano sopratutto i tempi di latenza non  
tanto le connessioni concorrenti visto che la mia applicazione avrà solo  
un utente connesso alla volta, quindi mi interessa che sia più reattiva  
possibile.

2. Come backend cosa utilizzereste voi?

3. Secondo voi l’utilizzo di opal potrebbe portare dei vantaggi?

4. Vostri pareri riguardo la creazione di isomorphic application  
seguendo questa strada.

Grazie a tutti per il vostro contributo.
