<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Rubygems on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/rubygems/</link>
    <description>Recent content in Rubygems on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Tue, 11 Feb 2025 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/rubygems/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Da melabit a melabit: Jekyll, installazione e configurazione di base</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/</link>
      <pubDate>Tue, 11 Feb 2025 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2025/02/11/da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/</guid>
      <description>&lt;p&gt;Questo articolo non vuole essere una guida dettagliata alla installazione e configurazione di &lt;a href=&#34;https://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt;; per quello ci sono le ottime guide riportate più sotto.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;articolo è invece una raccolta commentata delle note che ho preso mentre sviluppavo &lt;a href=&#34;https://melabit.com/it/&#34;&gt;melabit.com/posts/it&lt;/a&gt;, e sono il risultato di giorni e giorni di prove ed errori, di cambi di direzione, di letture alla ricerca del comando &lt;em&gt;giusto&lt;/em&gt;. A me le note servivano per ricordare quello che avevo fatto e come avevo risolto i problemi che si presentavano di volta in volta. A voi potrebbero essere utili per fare tutto più in fretta e senza intoppi.&lt;/p&gt;&#xA;&lt;h4 id=&#34;installazione-di-jekyll&#34;&gt;Installazione di Jekyll&lt;/h4&gt;&#xA;&lt;p&gt;Per fare delle prove con Jekyll non c&amp;rsquo;è niente di meglio che usare una macchina virtuale, magari con una versione server di Linux che carica poco il sistema principale. Una buona alternativa è un server cloud virtuale, anche economico, come &lt;a href=&#34;https://upcloud.com/products/cloud-servers&#34;&gt;UpCloud&lt;/a&gt;, &lt;a href=&#34;https://cloud.google.com/products/compute&#34;&gt;Google Compute Engine&lt;/a&gt;, &lt;a href=&#34;https://aws.amazon.com/ec2/?nc2=h_ql_prod_fs_ec2&#34;&gt;Amazon EC2&lt;/a&gt; o similari. Per lavorare sul serio, invece, è molto più comodo e veloce usare una macchina &lt;em&gt;reale&lt;/em&gt;, tanto più che seguendo queste istruzioni il rischio di fare danni è nullo o quasi. Io per fortuna avevo a disposizione un vecchio Mac, che mi ha permesso di provare e riprovare sapendo che, in caso di problemi, avrei potuto resettarlo facilmente.&lt;/p&gt;&#xA;&lt;p&gt;La guida migliore per l&amp;rsquo;installazione di Jekyll è senza dubbio &lt;a href=&#34;https://jekyllrb.com/docs/installation/&#34;&gt;quella ufficiale&lt;/a&gt;, con istruzioni specifiche per i sistemi operativi più diffusi.&lt;/p&gt;&#xA;&lt;p&gt;La &lt;a href=&#34;https://jekyllrb.com/docs/installation/macos/&#34;&gt;guida per macOS&lt;/a&gt; è fatta bene, ma l&amp;rsquo;installazione richiede &lt;a href=&#34;https://brew.sh/&#34;&gt;Homebrew&lt;/a&gt; e un buon numero di passaggi da eseguire con attenzione. Su Linux l&amp;rsquo;installazione è molto più facile, mentre su Windows la cosa migliora da fare è installare il &lt;a href=&#34;https://learn.microsoft.com/en-us/windows/wsl/about&#34;&gt;Windows Subsystem for Linux (WSL)&lt;/a&gt; e poi lavorare &lt;a href=&#34;https://jekyllrb.com/docs/installation/windows/&#34;&gt;di fatto in un ambiente Linux&lt;/a&gt;.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Un dettaglio importante che manca nelle istruzioni per macOS &amp;ndash; ma che invece è presente in quelle per &lt;a href=&#34;https://jekyllrb.com/docs/installation/freebsd/&#34;&gt;Ubuntu&lt;/a&gt;, &lt;a href=&#34;https://jekyllrb.com/docs/installation/freebsd/&#34;&gt;FreeBSD&lt;/a&gt; e gli &lt;a href=&#34;https://jekyllrb.com/docs/installation/other-linux/&#34;&gt;altri Linux&lt;/a&gt; &amp;ndash; è che, prima di eseguire il comando finale &lt;code&gt;gem install jekyll&lt;/code&gt; (ma volendo anche prima di iniziare ad installare Jekyll), è bene aggiungere queste righe al file &lt;code&gt;~/.bashrc&lt;/code&gt; o &lt;code&gt;~/.zshrc&lt;/code&gt; (a seconda della &lt;em&gt;shell&lt;/em&gt; usata),&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#--- Install Ruby gems in the user account, e.g. in ~/.gems ---&#xA;export GEM_HOME=&amp;#34;$HOME/.gems&amp;#34;&#xA;export PATH=&amp;#34;$HOME/.gems/bin:$PATH&amp;#34;&#xA;#--- end ---&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ed eseguire &lt;code&gt;source ~/.bashrc&lt;/code&gt; o &lt;code&gt;source ~/.zshrc&lt;/code&gt; per attivare le nuove variabili di ambiente (io sono rozzo e mi limito a chiudere il Terminale e a riaprirlo subito dopo).&lt;/p&gt;&#xA;&lt;p&gt;A cosa servono quelle righe? Ad istruire il gestore dei pacchetti di &lt;a href=&#34;https://www.ruby-lang.org/en/&#34;&gt;Ruby&lt;/a&gt;, &lt;code&gt;RubyGems&lt;/code&gt;, ad installare tutte le sue &lt;code&gt;gemme&lt;/code&gt;,&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; fra cui c&amp;rsquo;è anche Jekyll, nell&amp;rsquo;account dell&amp;rsquo;utente invece che a livello di sistema. Una cosa buona e giusta per separare l&amp;rsquo;installazione nativa di &lt;code&gt;Ruby&lt;/code&gt; all&amp;rsquo;interno del sistema operativo da tutto ciò che installiamo noi, permettendoci di correggere gli (inevitabili) errori senza correre il rischio di intaccare le funzioni di base del sistema operativo.&lt;/p&gt;&#xA;&lt;p&gt;A questo punto, è possibile eseguire l&amp;rsquo;installazione vera e propria di Jekyll,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem install jekyll&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;seguita subito dopo da un&amp;rsquo;altra gemma molto utile, &lt;a href=&#34;https://rubygems.org/gems/bundler&#34;&gt;Bundler&lt;/a&gt;,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem install bundler&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che inspiegabilmente è stata completamente dimenticata nelle istruzioni per macOS .&lt;/p&gt;&#xA;&lt;p&gt;Per istruire anche &lt;code&gt;bundler&lt;/code&gt; ad installare tutto nell&amp;rsquo;account dell&amp;rsquo;utente, bisogna eseguire&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ bundle config set --local path $GEM_HOME&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Infine, se stiamo usando una macchina virtuale o un server cloud e il nostro sistema operativo principale è macOS, possiamo installare anche questa gemma,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem install rmate&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che ci permetterà di usare &lt;a href=&#34;https://macromates.com/&#34;&gt;TextMate&lt;/a&gt;, che secondo me è nel complesso il miglior editor per macOS che ci sia in circolazione, per editare i file su cui si deve mettere le mani, invece di dover usare &lt;code&gt;nano&lt;/code&gt;, &lt;code&gt;vim&lt;/code&gt; o &lt;code&gt;emacs&lt;/code&gt; direttamente sulla macchina virtuale/cloud (che, avendo installata una versione server di Linux, non ha una interfaccia grafica).&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;il-primo-sito-in-jekyll&#34;&gt;Il primo sito in Jekyll&lt;/h4&gt;&#xA;&lt;p&gt;Alla fine del processo di installazione di Jekyll, tutte le guide suggeriscono di creare un nuovo sito con&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ jekyll new my-new-blog&#xA;Running bundle install in [...]/my-new-blog... &#xA;  Bundler: Resolving dependencies...&#xA;  Bundler: Bundle complete! 7 Gemfile dependencies, 30 gems now installed.&#xA;  Bundler: Use `bundle info [gemname]` to see where a bundled gem is installed.&#xA;New jekyll site installed in [...]/my-new-blog. &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;che crea una nuova cartella &lt;code&gt;my-new-blog&lt;/code&gt; nella cartella corrente (i puntini fra parentesi quadre indicano la parte di percorso che dipende dal sistema operativo). Spostandosi nella nuova cartella e attivando il web server integrato in Jekyll,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd  my-new-blog&#xA;$ bundle exec jekyll serve --host=0.0.0.0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;potremo vedere il nostro nuovo sito all&amp;rsquo;URL &lt;code&gt;http://localhost:4000&lt;/code&gt; se stiamo usando una macchina reale. Se invece stiamo usando una macchina virtuale o un server cloud, dovremo puntare il browser all&amp;rsquo;URL pubblico fornitoci dalla macchina virtuale (o server cloud), utilizzando sempre la porta 4000.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-02-11-da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/jekyll-new-site.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Niente da dire, questa procedura è utile per verificare che tutto funzioni, e poi &lt;a href=&#34;https://github.com/jekyll/minima&#34;&gt;Minima&lt;/a&gt;, il tema di default, è davvero molto pulito ed elegante. Se Minima vi basta, potete chiuderla qui, sarà sufficiente dare un titolo al sito e aggiungere i contenuti e potrete partire immediatamente con il vostro nuovo blog in Jekyll.&lt;/p&gt;&#xA;&lt;p&gt;Ma questa procedura ci dà anche una idea molto pallida di cosa si possa fare  &lt;em&gt;davvero&lt;/em&gt; con Jekyll. Perché, e questo è un limite non da poco, le funzioni di Jekyll sono  strettamente integrate con i suoi temi grafici.&lt;/p&gt;&#xA;&lt;h4 id=&#34;jekyll-e-i-temi-grafici&#34;&gt;Jekyll e i temi grafici&lt;/h4&gt;&#xA;&lt;p&gt;Minima è un esempio di tema &lt;em&gt;gem-based&lt;/em&gt;, installato al di fuori della cartella del sito e che, proprio per il fatto di separare nettamente i contenuti del sito dal suo aspetto grafico, può essere in teoria facilmente sostituito con un altro tema a &lt;em&gt;gemma&lt;/em&gt;, come quello mostrato qui sotto.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-02-11-da-melabit-a-melabit-jekyll-installazione-e-configurazione-di-base/jekyll-new-site-gem.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Ma i temi di questo tipo sono pochi, in genere sono piuttosto minimali e, per la loro stessa natura, è più laborioso modificarli o aggiungere nuove funzioni. E quel che è peggio, spesso sono fatti per versioni ormai obsolete di Jekyll e non funzionano nelle ultime versioni.&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;La stragrande maggioranza dei &lt;a href=&#34;http://jekyllthemes.org/&#34;&gt;temi per Jekyll&lt;/a&gt; arriva invece in un formato che integra in un&amp;rsquo;unica cartella sia i contenuti che la grafica. Una cosa molto comoda quando si trova il tema &lt;em&gt;giusto&lt;/em&gt;, ma che rende molto più complicato cambiare tema a posteriori.&lt;/p&gt;&#xA;&lt;p&gt;Installare la maggioranza dei temi per Jekyll significa di fatto installare tutto il sito che lo contiene, dandosi poi da fare per sostituire i post e le immagini preconfezionate con i nostri post e con le nostre immagini. Di conseguenza, è preferibile &lt;em&gt;prima&lt;/em&gt; scegliere un tema che ci piaccia e che supporti almeno una parte di quello che ci aspettiamo dal sito, e solo &lt;em&gt;dopo&lt;/em&gt; iniziare ad estenderne le funzioni nel modo desiderato.&lt;/p&gt;&#xA;&lt;p&gt;Ma questo sarà l&amp;rsquo;argomento della prossima puntata.&lt;/p&gt;&#xA;&lt;h4 id=&#34;e-se-jekyll-non-ci-piace-più&#34;&gt;E se Jekyll non ci piace più?&lt;/h4&gt;&#xA;&lt;p&gt;Allora dobbiamo disinstallare tutto. Il &lt;a href=&#34;https://emaxime.com/2018/how-to-uninstall-all-ruby-gems&#34;&gt;modo moderno per farlo&lt;/a&gt; è usare questo comando,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem uninstall --all --ignore-dependencies --executables --verbose&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;oppure, per chi ama la compattezza,&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ gem uninstall -aIxV&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;dove lo switch &lt;code&gt;--all&lt;/code&gt; segnala di disinstallare tutte le gemme, mentre &lt;code&gt;--ignore-dependencies&lt;/code&gt; permette di evitare di bloccare il processo di disinstallazione quando si disinstalla una &lt;em&gt;gemma&lt;/em&gt; richiesta da un&amp;rsquo;altra &lt;em&gt;gemma&lt;/em&gt;. Il terzo switch &lt;code&gt;--executable&lt;/code&gt; serve per disinstallare gli eseguibili senza richiedere ogni volta una conferma. Infine &lt;code&gt;--verbose&lt;/code&gt; è utile per farci spiegare per filo e per segno quello che sta succedendo.&lt;/p&gt;&#xA;&lt;p&gt;Se avete seguito il consiglio iniziale di installare tutto nell&amp;rsquo;account utente non vi serviranno i privilegi di amministratore. Altrimenti avrete fatto male e per punizione dovrete anteporre &lt;code&gt;sudo&lt;/code&gt; al comando di installazione.&lt;/p&gt;&#xA;&lt;p&gt;Una volta disinstallate tutte le gemme, si potrebbe anche disinstallare &lt;code&gt;ruby&lt;/code&gt; e i pacchetti accessori, usando Homebrew per macOS oppure il gestore dei specifico per la distribuzione Linux usata. Ma con i grandi dischi attuali, vale la pena darsi tanto da fare solo per risparmiare qualche decina di MB?&lt;/p&gt;&#xA;&lt;h4 id=&#34;alla-prossima&#34;&gt;Alla prossima&lt;/h4&gt;&#xA;&lt;p&gt;L&amp;rsquo;articolo è già troppo lungo ed è meglio chiuderlo qui. Il &lt;a href=&#34;https://melabit.com/it/2025/03/01/da-melabit-a-melabit-sviluppare-un-sito-in-Jekyll/&#34;&gt;prossimo articolo&lt;/a&gt; servirà per entrare nel vivo dello sviluppo di un sito con Jekyll. A presto!&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;A causa dell&amp;rsquo;abbondanza di documentazione, con Jekyll il vero problema è riuscire a distinguere le guide davvero utili da quelle che fanno solo perdere tempo.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Da ora in poi non menzionerò più Windows, perché tutte le istruzioni necessarie a chi usa quel sistema operativo saranno identiche a quelle per Linux.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Una &lt;em&gt;gemma&lt;/em&gt; è un programma o una libreria scritta in &lt;code&gt;Ruby&lt;/code&gt; che contiene al suo interno tutto ciò che serve per eseguirla, o per sviluppare nuovi programmi che ne sfruttano le funzioni. Le gemme vengono installate tramite il gestore dei pacchetti standard, RubyGems, il cui comando &lt;code&gt;gem&lt;/code&gt; permette di eseguire tutti i processi di installazione, aggiornamento e disinstallazione delle varie gemme.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Naturalmente il problema non si pone per chi è già un maestro di &lt;code&gt;vim&lt;/code&gt; o &lt;code&gt;emacs&lt;/code&gt;.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:5&#34;&gt;&#xA;&lt;p&gt;E quando dico &amp;ldquo;spesso&amp;rdquo; non esagero.&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
  </channel>
</rss>
