<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://whdzera.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://whdzera.com/" rel="alternate" type="text/html" /><updated>2026-01-26T05:35:06+00:00</updated><id>https://whdzera.com/feed.xml</id><title type="html">whdzera</title><subtitle>Temukan berbagai tulisan menarik seputar teknologi. Blog ini dibuat sebagai ruang berbagi ide, pengalaman, dan pengetahuan yang bisa bermanfaat untuk siapa saja. Yuk, jelajahi dan temukan sesuatu yang baru di setiap postingannya!</subtitle><entry><title type="html">Redis di Rails</title><link href="https://whdzera.com/blog/redis-di-rails" rel="alternate" type="text/html" title="Redis di Rails" /><published>2026-01-03T00:00:00+00:00</published><updated>2026-01-03T00:00:00+00:00</updated><id>https://whdzera.com/blog/redis-di-rails</id><content type="html" xml:base="https://whdzera.com/blog/redis-di-rails"><![CDATA[<h1 id="redis-di-rails">Redis di Rails</h1>

<h2 id="apa-itu-redis">Apa itu Redis?</h2>

<p>Redis (<em>Remote Dictionary Server</em>) adalah salah satu <em>in-memory data store</em> yang sangat populer dan sering digunakan bersama Ruby on Rails untuk meningkatkan performa dan skalabilitas aplikasi. Pada artikel ini, kita akan membahas apa itu Redis, kenapa sering dipakai di Rails, serta contoh penggunaan umumnya.</p>

<p>Redis ini berbasis <em>key-value</em> yang berjalan di memori (RAM). Karena bekerja di memori, Redis sangat cepat dibandingkan database relasional seperti MySQL atau PostgreSQL.
Redis biasanya digunakan untuk Cache data, Session stor, Background job queue, Real-time data (counter, leaderboard, rate limiting)
Walaupun berbasis memori, Redis juga mendukung <em>persistence</em> ke disk, sehingga data bisa disimpan jika server direstart.</p>

<h2 id="kenapa-redis-populer-di-rails">Kenapa Redis Populer di Rails?</h2>

<p>Rails dikenal produktif, tapi performa bisa menjadi tantangan ketika aplikasi sudah besar. Redis hadir sebagai solusi untuk beberapa masalah umum di Rails.</p>

<p>Beberapa alasannya:</p>

<ol>
  <li>
    <p><strong>Performa Tinggi</strong>
Redis sangat cepat karena data disimpan di RAM. Cocok untuk mengurangi query berulang ke database.</p>
  </li>
  <li>
    <p><strong>Integrasi Mudah</strong>
Rails sudah menyediakan dukungan bawaan untuk cache menggunakan Redis.</p>
  </li>
  <li>
    <p><strong>Ekosistem Gem yang Kuat</strong>
Banyak gem Rails populer yang bergantung pada Redis, seperti Sidekiq dan Action Cable.</p>
  </li>
  <li>
    <p><strong>Skalabilitas</strong>
Redis membantu Rails menangani traffic tinggi dengan lebih efisien.</p>
  </li>
</ol>

<hr />

<h2 id="penggunaan-redis-di-rails">Penggunaan Redis di Rails</h2>

<h3 id="cache-di-rails">Cache di Rails</h3>

<p>Redis sering digunakan sebagai <em>cache store</em> untuk menyimpan hasil query atau proses berat.</p>

<p>Contoh penggunaan:</p>

<ul>
  <li>Cache hasil query ActiveRecord</li>
  <li>Cache halaman atau fragment</li>
</ul>

<p>Dengan cache, Rails tidak perlu menghitung ulang atau query ulang data yang sama.</p>

<h3 id="session-store">Session Store</h3>

<p>Secara default, Rails menyimpan session di cookie. Untuk aplikasi skala besar, session bisa disimpan di Redis agar:</p>

<ul>
  <li>Lebih aman</li>
  <li>Tidak membebani client</li>
  <li>Mudah dibagi antar server</li>
</ul>

<p>Ini sangat berguna untuk aplikasi yang menggunakan banyak server (load balancer).</p>

<h3 id="background-job-sidekiq">Background Job (Sidekiq)</h3>

<p>Sidekiq adalah background job processor populer di Rails dan <strong>wajib menggunakan Redis</strong>.</p>

<p>Contoh use case:</p>

<ul>
  <li>Kirim email</li>
  <li>Proses data besar</li>
  <li>Integrasi API pihak ketiga</li>
</ul>

<p>Dengan Redis, job bisa diproses secara asynchronous tanpa mengganggu request utama user.</p>

<h3 id="action-cable-websocket">Action Cable (WebSocket)</h3>

<p>Untuk fitur real-time seperti chat atau notifikasi, Rails menggunakan Action Cable.</p>

<p>Redis digunakan sebagai:</p>

<ul>
  <li>Pub/Sub adapter</li>
  <li>Media komunikasi antar server</li>
</ul>

<p>Tanpa Redis, fitur real-time akan sulit diskalakan.</p>

<hr />

<h2 id="kapan-sebaiknya-menggunakan-redis">Kapan Sebaiknya Menggunakan Redis?</h2>

<p>Gunakan Redis jika:</p>

<ul>
  <li>Aplikasi mulai lambat karena query berulang</li>
  <li>Membutuhkan background job</li>
  <li>Memiliki fitur real-time</li>
  <li>Traffic mulai tinggi</li>
</ul>

<p>Tidak wajib menggunakan Redis untuk aplikasi Rails kecil, tapi sangat disarankan ketika aplikasi mulai berkembang.</p>

<h2 id="kapan-tidak-perlu-redis">Kapan Tidak Perlu Redis?</h2>

<p>Redis mungkin belum diperlukan jika:</p>

<ul>
  <li>Aplikasi masih kecil</li>
  <li>Traffic masih rendah</li>
  <li>Belum ada kebutuhan async job atau real-time</li>
</ul>

<p>Menambahkan Redis terlalu dini bisa menambah kompleksitas.</p>

<hr />

<h2 id="kesimpulan">Kesimpulan</h2>

<p>Redis adalah pasangan yang sangat kuat untuk Ruby on Rails. Dengan Redis, aplikasi Rails bisa menjadi Lebih cepat, scalable, dan siap untuk traffic besar
Jika kamu membangun aplikasi Rails serius untuk production, Redis hampir pasti akan menjadi bagian dari arsitektur aplikasimu.</p>

<hr />

<p>Semoga artikel ini membantu memahami Redis</p>]]></content><author><name>whdzera</name></author><summary type="html"><![CDATA[Redis di Rails]]></summary></entry><entry><title type="html">Rails World 2025 di Amsterdam</title><link href="https://whdzera.com/blog/rails-world-2025" rel="alternate" type="text/html" title="Rails World 2025 di Amsterdam" /><published>2025-09-12T00:00:00+00:00</published><updated>2025-09-12T00:00:00+00:00</updated><id>https://whdzera.com/blog/rails-world-2025</id><content type="html" xml:base="https://whdzera.com/blog/rails-world-2025"><![CDATA[<p>Tahun 2025 kembali menjadi momen penting bagi komunitas Ruby on Rails dengan terselenggaranya <strong>Rails World 2025</strong> di Amsterdam, Belanda. Acara ini bukan sekadar konferensi teknologi, tapi juga perayaan atas keberlangsungan, evolusi, dan kreativitas dari ekosistem Rails. Dengan menghadirkan lebih dari 800 developer dari 62 negara, Rails World 2025 benar-benar menjadi melting pot ide, inovasi, dan pengalaman.</p>

<p>Kalian bisa nonton di <a href="https://www.youtube.com/playlist?list=PLHFP2OPUpCebhAv1ZWb_978cTl1o-yue-">Rails World 2025 YouTube playlist</a></p>

<hr />

<h2 id="pembukaan">Pembukaan</h2>

<p>Acara dibuka oleh <strong>David Heinemeier Hansson (DHH)</strong> yang kembali menekankan satu pesan klasik “<em>jangan terjebak dalam kompleksitas</em>”. Dalam era di mana banyak framework dan tool cenderung semakin rumit, DHH justru mengingatkan pentingnya menjaga kesederhanaan.</p>

<p>Selain itu, ia mengumumkan <strong>Rails 8.1 beta</strong> dengan berbagai fitur baru yang siap memperkuat produktivitas developer:</p>

<ul>
  <li><strong>Markdown Rendering</strong></li>
  <li><strong>Active Job Continuations</strong></li>
  <li><strong>Action Text Lexxy</strong></li>
  <li><strong>Beamer</strong></li>
  <li><strong>Active Record Tenating</strong></li>
  <li><strong>Kamal Geo Proxy</strong></li>
</ul>

<p>Menariknya, DHH juga mendemonstrasikan bagaimana ia bisa menyalakan laptop Framework, menginstal Omarchy OS, dan menjalankan aplikasi Rails hanya dalam waktu enam menit. Demo ini bukan hanya gimmick, tapi sebuah simbol bahwa Rails masih bisa tetap cepat, efisien, dan relevan di jaman sekarang.</p>

<h2 id="hotwire-native">Hotwire Native</h2>

<p><strong>Joe Masilotti</strong> menutup hari pertama dengan keynote tentang <strong>Hotwire Native</strong>.<br />
Topik ini menjadi salah satu highlight karena menjawab salah satu kebutuhan terbesar developer masa kini: membangun aplikasi <strong>web, iOS, dan Android</strong> tanpa menduplikasi business logic.</p>

<p>Dengan pendekatan ini, Rails semakin menegaskan posisinya sebagai <em>“framework full-stack yang sesungguhnya”</em>, mampu mengakomodasi pengembangan lintas platform dalam satu basis kode.</p>

<h2 id="ruby-di-masa-depan">Ruby di Masa Depan</h2>

<p>Hari kedua dibuka dengan sesi menarik bersama <strong>Aaron Patterson, Hiroshi Shibata, dan Jean Boussier</strong> dari tim maintainer Ruby, dipandu oleh <strong>Robby Russell</strong>.</p>

<p>Mereka berbagi tentang:</p>

<ul>
  <li>Perkembangan terbaru dalam bahasa Ruby.</li>
  <li>Tantangan teknis yang dihadapi tim inti.</li>
  <li>Harapan dan visi untuk ekosistem Ruby &amp; Rails ke depan.</li>
</ul>

<p>Sesi ini terasa spesial karena jarang sekali kita bisa mendengar langsung suara dari para maintainer Ruby yang bekerja di balik layar untuk menjaga bahasa ini tetap modern, powerful, dan ramah bagi developer.</p>

<h2 id="shopify-jit-dan-ractors">Shopify, JIT, dan Ractors</h2>

<p>Masih di hari kedua, <strong>Aaron Patterson</strong> kembali tampil dengan energi penuh.<br />
Ia memaparkan pekerjaan Shopify dalam mengeksplorasi <strong>Ractors</strong> untuk pemrosesan paralel, perkembangan <strong>ZJIT compiler</strong>, serta trik menulis kode yang lebih ramah JIT.</p>

<p>Presentasi ini penting karena menyentuh isu performa, salah satu kritik klasik terhadap Ruby. Shopify sebagai salah satu pengguna Rails terbesar di dunia menunjukkan bahwa ada investasi serius untuk menjadikan Ruby &amp; Rails semakin scalable.</p>

<h2 id="rails-at-scale-summit">Rails at Scale Summit</h2>

<p>Inovasi format di Rails World 2025 adalah hadirnya <strong>Rails at Scale Summit</strong> yang didukung Shopify.<br />
Summit ini fokus pada tantangan menjalankan aplikasi Rails dengan trafik tinggi dan kompleksitas besar.</p>

<ul>
  <li>Dihadiri oleh engineer dari <strong>36 perusahaan</strong>.</li>
  <li>Peserta dibatasi hanya <strong>100 orang</strong> agar diskusi lebih dalam dan personal.</li>
  <li>Format satu track dengan ruang untuk networking santai.</li>
</ul>

<p>Hasilnya? Feedback sangat positif. Banyak peserta merasa bisa berbagi dan belajar secara jujur tanpa tekanan. Summit ini memperlihatkan bahwa Rails bukan hanya framework untuk startup kecil, tapi juga mampu menopang sistem berskala besar.</p>

<h2 id="pengalaman-unik-dan-kreatif">Pengalaman Unik dan Kreatif</h2>

<p>Rails World 2025 juga menonjol dengan sentuhan kreatif di luar sesi teknis.<br />
Beberapa di antaranya:</p>

<ul>
  <li><strong>Ruby Embassy &amp; Ruby Passport</strong>: pengalaman ala birokrasi lucu lengkap dengan stempel paspor dan bahkan lightsaber.</li>
  <li><strong>Ruby Phone</strong>: instalasi interaktif di mana peserta bisa mengirim pesan video, meninggalkan catatan, atau ngobrol spontan lewat telepon yang terhubung.</li>
  <li><strong>Baltic Ruby Bingo Boat</strong>: transportasi unik menuju venue, menambah warna khas Amsterdam.</li>
  <li><strong>Lightning Track</strong>: 16 pembicara membawakan presentasi singkat nan padat, dipandu oleh Huntress.</li>
  <li><strong>Closing Party di Straat Museum</strong>: ditutup dengan pesta meriah berisi musik, seni, makanan, dan tarian.</li>
</ul>

<p>Bagian ini membuktikan bahwa Rails World bukan hanya konferensi tech yang kaku, melainkan juga ruang sosial untuk merayakan budaya developer.</p>

<h2 id="kesimpulan">Kesimpulan</h2>

<p>Rails World 2025 di Amsterdam berhasil membuktikan tiga hal penting:</p>

<ol>
  <li>
    <p><strong>Rails masih relevan dan berkembang.</strong><br />
Dengan hadirnya Rails 8.1 dan inovasi seperti Hotwire Native, Rails terus beradaptasi dengan kebutuhan zaman.</p>
  </li>
  <li>
    <p><strong>Komunitas adalah kekuatan utama.</strong><br />
Lebih dari 800 developer berkumpul, saling berbagi ilmu, pengalaman, bahkan humor. Energi positif ini adalah bahan bakar bagi ekosistem Rails.</p>
  </li>
  <li>
    <p><strong>Rails siap untuk skala besar.</strong><br />
Rails at Scale Summit menegaskan bahwa Rails bisa menjadi tulang punggung aplikasi dengan jutaan pengguna dan trafik tinggi.</p>
  </li>
</ol>

<p>Secara keseluruhan, Rails World 2025 bukan hanya sekadar update teknis, tapi juga bukti bahwa Rails adalah komunitas global yang hidup, kreatif, dan penuh inovasi.</p>

<hr />

<h2 id="menuju-rails-world-2026">Menuju Rails World 2026</h2>

<p>Tahun depan, Rails World akan digelar di <strong>Austin, Texas</strong> pada akhir September 2026.<br />
semoga author bisa ke sana ya</p>]]></content><author><name>whdzera</name></author><summary type="html"><![CDATA[Tahun 2025 kembali menjadi momen penting bagi komunitas Ruby on Rails dengan terselenggaranya Rails World 2025 di Amsterdam, Belanda. Acara ini bukan sekadar konferensi teknologi, tapi juga perayaan atas keberlangsungan, evolusi, dan kreativitas dari ekosistem Rails. Dengan menghadirkan lebih dari 800 developer dari 62 negara, Rails World 2025 benar-benar menjadi melting pot ide, inovasi, dan pengalaman.]]></summary></entry><entry><title type="html">Halaman Error Lebih Baik dengan Gem better_errors di Rails</title><link href="https://whdzera.com/blog/tutorial-gem-better-errors-di-rails" rel="alternate" type="text/html" title="Halaman Error Lebih Baik dengan Gem better_errors di Rails" /><published>2025-04-21T00:00:00+00:00</published><updated>2025-04-21T00:00:00+00:00</updated><id>https://whdzera.com/blog/tutorial-gem-better-errors-di-rails</id><content type="html" xml:base="https://whdzera.com/blog/tutorial-gem-better-errors-di-rails"><![CDATA[<p>Saat mengembangkan aplikasi Ruby on Rails, tampilan error default seringkali terasa kurang informatif. Untuk pengalaman debugging yang lebih baik, kita bisa menggunakan <strong>gem <a href="https://github.com/BetterErrors/better_errors">better_errors</a></strong>.</p>

<p>Dengan gem ini, halaman error akan jauh lebih interaktif, lengkap dengan stack trace, preview variabel, hingga akses konsol Rails langsung dari browser.</p>

<hr />

<h2 id="1-tambahkan-gem-ke-gemfile">1. Tambahkan Gem ke Gemfile</h2>

<p>Buka file <code class="language-plaintext highlighter-rouge">Gemfile</code> lalu tambahkan:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">group</span> <span class="ss">:development</span> <span class="k">do</span>
  <span class="n">gem</span> <span class="s1">'better_errors'</span>
  <span class="n">gem</span> <span class="s1">'binding_of_caller'</span>
<span class="k">end</span>
</code></pre></div></div>

<blockquote>
  <p><code class="language-plaintext highlighter-rouge">binding_of_caller</code> opsional tapi sangat disarankan, karena memungkinkan kita membuka IRB console langsung di halaman error.</p>
</blockquote>

<h2 id="2-install-dependensi">2. Install Dependensi</h2>

<p>Jalankan perintah:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle <span class="nb">install</span>
</code></pre></div></div>

<h2 id="3-konfigurasi-opsional">3. Konfigurasi (Opsional)</h2>

<p>Secara default, <strong>better_errors</strong> hanya aktif di <strong>environment development</strong>.<br />
Kalau kamu ingin mengakses error page ini dari mesin lain (misalnya di jaringan lokal), tambahkan konfigurasi di <code class="language-plaintext highlighter-rouge">config/environments/development.rb</code>:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="no">BetterErrors</span><span class="o">::</span><span class="no">Middleware</span><span class="p">.</span><span class="nf">allow_ip!</span> <span class="s2">"0.0.0.0/0"</span>
</code></pre></div></div>

<blockquote>
  <p>Hati-hati! Jangan mengaktifkan ini di <strong>production</strong>, karena bisa membocorkan informasi sensitif.</p>
</blockquote>

<h2 id="4-coba-trigger-error">4. Coba Trigger Error</h2>

<p>Untuk menguji, buat error sederhana di salah satu controller:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">index</span>
  <span class="k">raise</span> <span class="s2">"Test Better Errors"</span>
<span class="k">end</span>
</code></pre></div></div>

<p>Akses halaman tersebut, maka kamu akan melihat tampilan error yang jauh lebih informatif dibandingkan default Rails.</p>

<h2 id="5-fitur-utama">5. Fitur Utama</h2>

<ul>
  <li>Tampilan error dengan syntax highlight.</li>
  <li>Stack trace yang bisa diklik dan ditelusuri.</li>
  <li>Preview nilai variabel di setiap level stack.</li>
  <li>IRB console langsung di browser (butuh <code class="language-plaintext highlighter-rouge">binding_of_caller</code>).</li>
</ul>

<h2 id="kesimpulan">Kesimpulan</h2>

<p>Menggunakan <strong>better_errors</strong> membuat debugging di Rails jauh lebih cepat dan menyenangkan.<br />
Dengan informasi error yang lebih jelas, kita bisa lebih mudah menemukan dan memperbaiki bug.</p>

<p>Kalau kamu sering bekerja dengan Rails, gem ini adalah salah satu yang <strong>wajib</strong> dipasang di environment development.</p>]]></content><author><name>whdzera</name></author><summary type="html"><![CDATA[Saat mengembangkan aplikasi Ruby on Rails, tampilan error default seringkali terasa kurang informatif. Untuk pengalaman debugging yang lebih baik, kita bisa menggunakan gem better_errors.]]></summary></entry><entry><title type="html">Pagination pakai Gem Kaminari di Rails</title><link href="https://whdzera.com/blog/pagination-pakai-gem-kaminari-di-rails" rel="alternate" type="text/html" title="Pagination pakai Gem Kaminari di Rails" /><published>2025-03-06T00:00:00+00:00</published><updated>2025-03-06T00:00:00+00:00</updated><id>https://whdzera.com/blog/pagination-pakai-gem-kaminari-di-rails</id><content type="html" xml:base="https://whdzera.com/blog/pagination-pakai-gem-kaminari-di-rails"><![CDATA[<h3 id="apa-itu-kaminari">Apa Itu Kaminari?</h3>

<p>Kaminari adalah sebuah gem Ruby untuk melakukan pagination pada ActiveRecord, Mongoid, dan berbagai ORM lainnya.
Pagination adalah fitur penting dalam aplikasi web untuk menampilkan data dalam jumlah besar secara efisien, kamu bisa dengan mudah membatasi jumlah item yang ditampilkan di satu halaman, serta menyediakan navigasi untuk pindah ke halaman-halaman berikutnya.</p>

<p>Berikut ini cara memakai Gem Kaminari di Ruby on rails.</p>

<h4 id="1-instalasi">1. Instalasi</h4>

<p>Tambahkan Kaminari ke file <code class="language-plaintext highlighter-rouge">Gemfile</code>:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">gem</span> <span class="s1">'kaminari'</span>
</code></pre></div></div>

<p>Kemudian jalankan perintah:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">bundle</span> <span class="n">install</span>
</code></pre></div></div>

<h4 id="2-setup-pagination-di-controller">2. Setup Pagination di Controller</h4>

<p>Misalkan kamu punya model Post, dan ingin menampilkan daftar postingan yang dipaginasi.</p>

<p>Di <code class="language-plaintext highlighter-rouge">posts_controller.rb</code>, ubah action index seperti berikut:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">index</span>
  <span class="vi">@posts</span> <span class="o">=</span> <span class="no">Post</span><span class="p">.</span><span class="nf">order</span><span class="p">(</span><span class="ss">created_at: :desc</span><span class="p">).</span><span class="nf">page</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="ss">:page</span><span class="p">]).</span><span class="nf">per</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="k">end</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">page(params[:page])</code> Menentukan halaman saat ini berdasarkan parameter URL <code class="language-plaintext highlighter-rouge">?page=</code></p>

<h4 id="3-tampilkan-pagination-di-view">3. Tampilkan Pagination di View</h4>

<p>Di file <code class="language-plaintext highlighter-rouge">app/views/posts/index.html.erb</code>, tambahkan kode berikut setelah daftar item:</p>

<div class="language-erb highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;%</span> <span class="vi">@posts</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">post</span><span class="o">|</span> <span class="cp">%&gt;</span>
  <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"post"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;h2&gt;</span><span class="cp">&lt;%=</span> <span class="n">post</span><span class="p">.</span><span class="nf">title</span> <span class="cp">%&gt;</span><span class="nt">&lt;/h2&gt;</span>
    <span class="nt">&lt;p&gt;</span><span class="cp">&lt;%=</span> <span class="n">truncate</span><span class="p">(</span><span class="n">post</span><span class="p">.</span><span class="nf">content</span><span class="p">,</span> <span class="ss">length: </span><span class="mi">100</span><span class="p">)</span> <span class="cp">%&gt;</span><span class="nt">&lt;/p&gt;</span>
  <span class="nt">&lt;/div&gt;</span>
<span class="cp">&lt;%</span> <span class="k">end</span> <span class="cp">%&gt;</span>

<span class="cp">&lt;%=</span> <span class="n">paginate</span> <span class="vi">@posts</span> <span class="cp">%&gt;</span>
</code></pre></div></div>

<h4 id="4-kustomisasi-tampilan-paginasi">4. Kustomisasi Tampilan Paginasi</h4>

<p>Kaminari menyediakan generator untuk membuat file partial yang bisa kamu modifikasi:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rails g kaminari:views default
</code></pre></div></div>

<p>Ini akan menghasilkan file-file ERB di <code class="language-plaintext highlighter-rouge">app/views/kaminari/</code>. Kamu bisa mengedit tampilan tombol pagination sesuai selera, atau menambahkan class Tailwind, Bulma, Bootstrap, dsb.</p>

<p>Contoh kustomisasi tombol:</p>

<div class="language-erb highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;li</span> <span class="na">class=</span><span class="s">"page-item </span><span class="cp">&lt;%=</span> <span class="s1">'active'</span> <span class="k">if</span> <span class="n">current_page?</span> <span class="cp">%&gt;</span><span class="s">"</span><span class="nt">&gt;</span>
  <span class="cp">&lt;%=</span> <span class="n">link_to</span> <span class="n">page</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="ss">class: </span><span class="s2">"page-link"</span> <span class="cp">%&gt;</span>
<span class="nt">&lt;/li&gt;</span>
</code></pre></div></div>

<h4 id="5-contoh-url-paginasi">5. Contoh URL Paginasi</h4>

<p>Setelah setup di atas, kamu bisa membuka URL seperti:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>http://localhost:3000/posts?page=2
</code></pre></div></div>

<p>Dan Rails akan menampilkan halaman ke-2 dari daftar Post</p>

<p>Dengan gem Kaminari, proses pagination di aplikasi Rails menjadi sangat mudah dan fleksibel. Kamu bisa menggunakannya di berbagai model, mengkustom tampilan, serta menggabungkannya dengan AJAX atau infinite scrolling untuk pengalaman pengguna yang lebih modern.</p>

<p>Semoga tutorial ini bermanfaat! Jika ada pertanyaan atau saran, silakan tinggalkan komentar di bawah.</p>]]></content><author><name>whdzera</name></author><summary type="html"><![CDATA[Apa Itu Kaminari?]]></summary></entry><entry><title type="html">Cara pasang tema di jekyll</title><link href="https://whdzera.com/blog/cara-pasang-tema-di-jekyll" rel="alternate" type="text/html" title="Cara pasang tema di jekyll" /><published>2025-02-12T00:00:00+00:00</published><updated>2025-02-12T00:00:00+00:00</updated><id>https://whdzera.com/blog/cara-pasang-tema-di-jekyll</id><content type="html" xml:base="https://whdzera.com/blog/cara-pasang-tema-di-jekyll"><![CDATA[<p>Halo!<br />
Kalau kamu sedang membangun blog statis pakai Jekyll dan pengen tampil beda, kamu bisa mulai dengan mengganti <strong>tema Jekyll-nya</strong>. Di artikel ini, gw akan tunjukin langkah-langkah simpel buat pasang tema di Jekyll, sekaligus promosi dikit tema buatanku sendiri (:v hehe) : <strong><a href="https://github.com/whdzera/jekyll-niri">Niri Theme Jekyll</a></strong>.</p>

<hr />

<h4 id="1-instalasi-jekyll-lewati-jika-sudah">1. Instalasi Jekyll (Lewati Jika Sudah)</h4>

<p>Kalau kamu belum install Jekyll, jalankan perintah ini:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem <span class="nb">install </span>jekyll
</code></pre></div></div>

<p>Lalu buat proyek Jekyll baru (atau lewati jika kamu sudah punya):</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>jekyll new nama_app
</code></pre></div></div>

<h4 id="2-tambahkan-tema-ke-proyek-jekyll">2. Tambahkan Tema ke Proyek Jekyll</h4>

<p>Untuk menggunakan tema Niri, edit file <code class="language-plaintext highlighter-rouge">Gemfile</code> kamu dan tambahkan:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem <span class="s2">"niri"</span>, <span class="s2">"~&gt; 1.4"</span>
</code></pre></div></div>

<p>Setelah itu jalankan:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle
</code></pre></div></div>

<p>Selanjutnya, buka file <code class="language-plaintext highlighter-rouge">_config.yml</code> dan tambahkan:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>theme: niri
</code></pre></div></div>

<h4 id="3-jalankan-proyekmu">3. Jalankan Proyekmu</h4>

<p>Saatnya lihat hasilnya! Jalankan Jekyll server:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle <span class="nb">exec </span>jekyll s
</code></pre></div></div>

<p>Buka browser dan arahkan ke:</p>

<p><code class="language-plaintext highlighter-rouge">http://localhost:4000</code></p>

<p>Voila! Tema baru kamu sudah tampil.</p>

<h4 id="4-untuk-github-pages">4. Untuk Github Pages</h4>

<p>Jika kamu ingin deploy ke GitHub Pages, kamu perlu menggunakan <code class="language-plaintext highlighter-rouge">remote_theme</code> karena GitHub Pages tidak mengizinkan semua gem pihak ketiga. Tambahkan ini di <code class="language-plaintext highlighter-rouge">_config.yml</code>:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>remote_theme: whdzera/jekyll-niri
</code></pre></div></div>

<h4 id="5-cari-tema-jekyll-lainnya">5. Cari Tema Jekyll Lainnya</h4>

<p>Kalau kamu ingin eksplorasi tema-tema lain, cek beberapa situs berikut:</p>

<ul>
  <li><a href="http://jekyllthemes.org/">jekyllthemes.org</a></li>
  <li><a href="https://jekyllthemes.io/">jekylltheme.io</a></li>
  <li><a href="https://jamstackthemes.dev/ssg/jekyll/">jamstackthemes</a></li>
  <li>Github kata kunci search ‘jekyll theme’</li>
</ul>

<table>
  <tbody>
    <tr>
      <td>Tips: Selalu cek dokumentasi masing-masing tema untuk cara instalasi yang tepat ya!</td>
    </tr>
  </tbody>
</table>]]></content><author><name>whdzera</name></author><summary type="html"><![CDATA[Halo! Kalau kamu sedang membangun blog statis pakai Jekyll dan pengen tampil beda, kamu bisa mulai dengan mengganti tema Jekyll-nya. Di artikel ini, gw akan tunjukin langkah-langkah simpel buat pasang tema di Jekyll, sekaligus promosi dikit tema buatanku sendiri (:v hehe) : Niri Theme Jekyll.]]></summary></entry><entry><title type="html">Install Ruby dan Rails di Linux Ubuntu</title><link href="https://whdzera.com/blog/install-ruby-on-rails-di-linux" rel="alternate" type="text/html" title="Install Ruby dan Rails di Linux Ubuntu" /><published>2019-04-18T00:00:00+00:00</published><updated>2019-04-18T00:00:00+00:00</updated><id>https://whdzera.com/blog/install-ruby-on-rails-di-linux</id><content type="html" xml:base="https://whdzera.com/blog/install-ruby-on-rails-di-linux"><![CDATA[<h3 id="alasan">Alasan</h3>

<p>mengapa ruby on rails ? karena framework ruby on rails , MVC dan bahasa ruby sangat elegan dan enak dipandang, mungkin :) . tenang, gampang kok instal ruby dan ruby on rails di Ubuntu</p>

<p>jadi gak usah banyak kata, langsung aja kita mulai :</p>

<h3 id="persiapan">Persiapan</h3>

<p>-Koneksi Internet Stabil</p>

<p>-Akses Root</p>

<p>-Sudah terinstal Curl</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">sudo </span>apt-get <span class="nb">install </span>curl
</code></pre></div></div>

<h3 id="instal-ruby-dengan-rvm">Instal Ruby dengan RVM</h3>

<p>rvm adalah ruby version manager . fungsinya untuk memanage versi dari ruby dan rails.
keuntunganya kita bisa berganti versi dari ruby dan rails dengan mudah dan gak ribet</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="se">\c</span>url <span class="nt">-L</span> https://get.rvm.io | bash <span class="nt">-s</span> stable <span class="nt">--ruby</span>
</code></pre></div></div>

<p>update rvm dan instal ruby, disini saya menggunakan ruby versi 2.4.0</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>rvm get stable <span class="nt">--autolibs</span><span class="o">=</span><span class="nb">enable</span>
</code></pre></div></div>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>rvm <span class="nb">install </span>ruby
</code></pre></div></div>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>rvm <span class="nt">--default</span> use ruby-2.4.0
</code></pre></div></div>

<p>cek ruby sudah terinstal</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>ruby <span class="nt">-v</span>
</code></pre></div></div>

<p>cek gem</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gem <span class="nt">-v</span>
</code></pre></div></div>

<p>update gem</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gem update <span class="nt">--system</span>
</code></pre></div></div>

<p>set rvm global gemset dan gem yg ada</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>rvm gemset use global
</code></pre></div></div>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gem list
</code></pre></div></div>

<p>instal rails dengan ruby gems</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gem <span class="nb">install </span>rails
</code></pre></div></div>

<p>cek rails sudah teinstal</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>rails <span class="nt">-v</span>
</code></pre></div></div>

<p>selesai . kita sudah menginstal ruby dan ruby on rails :)
kita sudah bisa buat project atau aplikasi dengan ruby on rails</p>

<h3 id="buat-project-baru">Buat project baru</h3>

<p>buat direktori baru</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">mkdir </span>project_rubyonrails
</code></pre></div></div>

<p>masuk direktori project_rubyonrails</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">cd </span>project_rubyonrails
</code></pre></div></div>

<p>buat project baru ruby on rails</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>rails new appku
</code></pre></div></div>

<p>masuk direktori project appku</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">cd </span>appku
</code></pre></div></div>

<p>test server</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>rails s
</code></pre></div></div>

<p>buka browser dan ketik di address bar</p>

<p><code class="language-plaintext highlighter-rouge">http://localhost:3000</code></p>

<p>jika tidak ada masalah . akan seperti gambar dibawah</p>

<p><img src="https://s3.gifyu.com/images/eNjSzlZ8UOw.jpg" alt="sucess" /></p>]]></content><author><name>whdzera</name></author><summary type="html"><![CDATA[Alasan]]></summary></entry></feed>