David Heinemeier Hansson menciptakan Ruby on Rails dengan prinsip Convention over Configuration, yaitu kerangka kerja yang meminimalkan kebutuhan konfigurasi rumit. Rails dirancang dengan konvensi bawaan yang kuat sehingga memudahkan pengembangan dan perubahan aplikasi.
Rails bersifat open source dan dibangun dengan bahasa pemrograman Ruby, yang terkenal sederhana dan ekspresif. Rails memungkinkan pengembangan cepat, misalnya menambahkan resource baru melalui RESTful routes dan tampilan templated dengan mudah.
Rails memiliki komunitas besar dan berpengalaman, sehingga solusi mudah ditemukan melalui Stack Overflow, GitHub issues, blog, tutorial, maupun buku. Dengan dukungan tersebut, masalah biasanya bisa cepat teratasi hanya dengan pencarian di Google.
Rails Conventions
Rails menggunakan pola MVC (Model-View-Controller) untuk mengatur arsitektur aplikasi.
- Model
- Berhubungan langsung dengan database melalui ActiveRecord ORM.
- Setiap model mewakili tabel di database (contoh: User mewakili tabel users).
- Mendukung validasi (uniqueness, presence, regex, dll.), asosiasi (belongs_to, has_many), serta callback (before_create, after_save).
- Contoh:
- Controller
- Menghubungkan request HTTP dengan Model (data) dan View (tampilan).
- Menangani logika tambahan seperti session, otorisasi, error, dan redirect.
- Menggunakan instance variable (@variable) agar data dari model bisa diakses di View.
- Contoh alur: request → controller action → ambil data dari model → kirim ke view.
- View
- Biasanya berupa template HTML dengan ERB (Embedded Ruby).
- Menampilkan data yang dikirim dari controller.
- Bisa berupa format lain: JavaScript, JSON, XML, CSS, bahkan CSV.
- Contoh ERB:
User.find(42) #=> {id: 42, name: "John"} User.create(name: "James")
<%= @user.name %>
Dengan pola MVC, Rails memisahkan data (Model), logika aplikasi (Controller), dan tampilan (View) sehingga kode lebih terstruktur, mudah dibaca, dan gampang dikembangkan.
Ruby Gems
Ruby Gems adalah paket kode mandiri (library) di ekosistem Ruby yang berfungsi untuk menyelesaikan masalah pemrograman tertentu tanpa harus menulis ulang kode dari nol.
Contoh populer:
- Devise → membantu membuat sistem autentikasi (login, registrasi, dsb).
- Puma → server HTTP multithread untuk menjalankan aplikasi Rails di lokal maupun production.
Tersedia ribuan Gem yang bisa digunakan, mulai dari manajemen database, autentikasi, testing, hingga deployment. Pengelolaan Gem dilakukan menggunakan RubyGems (package manager Ruby) dan biasanya didefinisikan dalam file Gemfile pada proyek Ruby on Rails.
Version Manager
Mengapa Rails Project Membutuhkan Version Manager?
Ketika mengembangkan aplikasi dengan Ruby on Rails, salah satu tantangan terbesar adalah mengelola versi Ruby dan Rails. Tidak jarang, satu proyek berjalan dengan Ruby 2.7, sementara proyek lain butuh Ruby 3.1.
Begitu juga dengan Rails: ada proyek lama yang masih bertahan di Rails 5, sedangkan proyek baru sudah menggunakan Rails 7.
Tanpa version manager, mengatur semua ini akan terasa sangat ribet. Dependency bisa saling bertabrakan, dan developer sering menghabiskan waktu hanya untuk memastikan lingkungan pengembangan tetap bersih. Di sinilah version manager berperan penting.
Version Manager adalah alat yang membantu developer untuk:
- Menginstal banyak versi Ruby dalam satu sistem.
- Berpindah antar versi dengan mudah.
- Memisahkan dependency antar proyek.
- Menjaga konsistensi di tim.
- Membuat upgrade lebih aman.
Bisa punya Ruby 2.7.6, Ruby 3.0.4, dan Ruby 3.2.2 sekaligus tanpa konflik.
Cukup satu perintah untuk switch dari Ruby lama ke Ruby terbaru.
Dengan gemset atau pengaturan isolasi, setiap proyek memiliki gem sendiri-sendiri. Jadi, versi rails, devise, atau gem lain tidak saling mengganggu.
Semua anggota tim bisa menggunakan versi Ruby/Rails yang sama dengan hanya mengikuti file konfigurasi di repo.
Ingin mencoba Ruby terbaru? Install dulu di version manager, lalu test proyekmu. Kalau ada masalah, tinggal switch balik ke versi lama.
Opsi Version Manager untuk Ruby on Rails
Ada beberapa tool populer yang digunakan komunitas Rails, diantaranya:
1. RVM
- Salah satu yang paling terkenal dan ramah pemula.
- Mendukung gemset, yaitu cara untuk memisahkan gem antar proyek.
- Banyak dokumentasi dan tutorial tersedia.
- Perintah instalasi & switching Ruby sederhana.
- Cocok untuk developer yang baru belajar Rails dan ingin setup cepat.
2. rbenv
- Lebih ringan dibanding RVM.
- Tidak ada fitur gemset bawaan, tapi bisa dikombinasikan dengan Bundler atau plugin seperti rbenv-gemset.
- Banyak digunakan di dunia profesional karena stabil dan minim konflik.
- Cocok untuk tim development yang butuh lingkungan stabil tanpa banyak fitur tambahan.
3. chruby
- Sangat minimalis dan sederhana.
- Bekerja bersama ruby-install untuk mengelola instalasi Ruby.
- Hampir tanpa fitur tambahan, hanya fokus pada switch Ruby versi.
- Cocok untuk developer yang suka setup sederhana dan tidak ingin ribet.
4. asdf
- Bukan hanya untuk Ruby, tapi juga mendukung banyak bahasa pemrograman lain (Node.js, Elixir, Python, Go, dsb).
- Sangat berguna jika kamu bekerja di proyek yang membutuhkan lebih dari satu bahasa.
- Menggunakan konsep plugin sehingga fleksibel.
- Cocok untuk full-stack developer yang sering berpindah bahasa pemrograman.
Struktur Folder Proyek Rails
sample_app/
├── app/ # Folder utama untuk kode aplikasi
│ ├── controllers/ # Controller (logic untuk request/response)
│ ├── models/ # Model (representasi data & logika bisnis)
│ ├── views/ # View (template HTML/ERB untuk ditampilkan)
│ ├── helpers/ # Helper method untuk views
│ ├── jobs/ # Background jobs
│ └── mailers/ # Email templates & logic
│
├── bin/ # Script untuk menjalankan Rails & tugas lain
├── config/ # Konfigurasi aplikasi (routes, database, environment)
├── db/ # File database & migration
├── lib/ # Library tambahan atau custom code
├── log/ # File log aplikasi
├── public/ # File statis (HTML, gambar, dll.)
├── storage/ # File upload (ActiveStorage)
├── test/ atau spec/ # Unit test / RSpec test
├── tmp/ # File sementara (cache, pid, dll.)
├── vendor/ # Dependensi eksternal (jarang dipakai sekarang)
│
├── Gemfile # Daftar dependency (gem) aplikasi
├── Rakefile # Task otomatis untuk Rails
└── config.ru # File startup untuk Rack-based server (Puma/Passenger)
Penjelasan singkat
- app/→ inti aplikasi (MVC: Model, View, Controller).
- config/→ pengaturan routes, environment, database.
- db/→ migration & schema database.
- Gemfile→ daftar library Ruby yang digunakan proyek.
- bin/rails→ command utama untuk menjalankan Rails.
Cara Membuat Proyek Ruby On Rails dari Nol
1. Pastikan Ruby dan Rails Terinstal
Pastikan sudah menginstal Ruby dan Rails di sistem.
Cek versi Ruby:
ruby -v
Cek versi Rails:
rails -v
Jika Rails belum terinstal, jalankan:
gem install rails
2. Buat Aplikasi Rails Baru
Gunakan perintah berikut untuk membuat project:
rails new NAMA_PROJECT
Rails akan otomatis:
- Membuat struktur folder proyek.
- Menginstal gem default.
- Menambahkan file konfigurasi dasar.
Jika ingin menambahkan opsi tertentu, lihat daftar lengkap dengan:
rails new --help
Sebagai contoh: membuat project bernama sample_app dengan PostgreSQL sebagai
database:
rails new sample_app -d postgresql
3. Masuk ke Folder Proyek
Setelah project selesai dibuat, masuk ke folder aplikasi:
cd sample_app
4. Jalankan Server Rails
Untuk memastikan semuanya berjalan, jalankan server lokal:
bin/rails server
Atau singkatnya:
rails s
Buka browser dan kunjungi: http://localhost:3000, jika muncul halaman Rails Welcome, artinya project berhasil dibuat.
5. Konfigurasi Database (Optional)
Jika menggunakan database lain (misalnya PostgreSQL atau MySQL), edit file
config/database.yml sesuai kebutuhan, lalu jalankan:
bin/rails db:create
6. Mulai Kembangkan Aplikasi
Sekarang kita siap membuat model, controller, dan view.
Ruby on Rails Scaffolding: Cara Cepat Membuat Aplikasi
Apa Itu Scaffolding di Rails?
Rails Scaffolding adalah fitur bawaan Rails yang secara otomatis menghasilkan kode dasar untuk operasi CRUD (Create, Read, Update, Delete). Dengan satu perintah, Rails akan membuat:
- Model: representasi data di database.
- Controller: logika untuk mengatur alur data dan request.
- Views: tampilan HTML untuk menampilkan data.
- Routes: jalur akses URL yang sudah siap dipakai.
- Migration: struktur tabel di database.
Dengan scaffolding, kita bisa langsung memiliki aplikasi sederhana yang sudah bisa digunakan tanpa menulis semua file secara manual.
Cara Menggunakan Rails Scaffold
Misalnya, kita ingin membuat aplikasi sederhana untuk mengelola artikel.
Jalankan perintah berikut di terminal:
bash rails generate scaffold Article title:string content:text
Perintah di atas akan membuat:
- Model Article dengan field title (string) dan content (text).
- Controller lengkap dengan method index, show, new, edit, create, update, destroy.
- Views HTML/ERB untuk setiap aksi CRUD.
- File migration untuk tabel articles.
Kemudian buka http://localhost:3000/articles di browser, dan kita sudah bisa langsung membuat, melihat, mengedit, dan menghapus artikel.
Kelebihan Scaffolding
- Cepat dan Praktis – Dalam hitungan menit sudah punya aplikasi CRUD.
- Belajar Struktur Rails – Cocok untuk memahami bagaimana model, view, dan controller bekerja bersama.
- Prototyping – Sangat berguna untuk membuat *prototype* aplikasi dengan cepat sebelum dikembangkan lebih jauh.
Kekurangan Scaffolding
- Kode Berlebihan – Rails membuat banyak kode default yang mungkin tidak semuanya dibutuhkan.
- Kurang Fleksibel – Struktur bawaan mungkin tidak sesuai dengan kebutuhan aplikasi nyata.
Komentar
Posting Komentar