Mulai mengembangkan aplikasi Ruby on Rails yang berjalan di lingkungan fleksibel App Engine. Aplikasi yang Anda buat berjalan di infrastruktur yang sama dengan yang mendukung semua produk Google, sehingga Anda dapat yakin bahwa aplikasi tersebut dapat diskalakan untuk melayani semua pengguna Anda, baik sedikit maupun jutaan.
Tutorial ini mengasumsikan bahwa Anda sudah memahami pengembangan web Rails. Tutorial ini akan memandu Anda menyiapkan Cloud SQL untuk PostgreSQL dengan aplikasi Rails baru. Anda juga dapat menggunakan tutorial ini sebagai referensi untuk mengonfigurasi aplikasi Rails yang ada agar menggunakan Cloud SQL untuk PostgreSQL.
Tutorial ini mendukung dan memerlukan Ruby 3.0 atau yang lebih baru.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
Menyiapkan instance Cloud SQL untuk PostgreSQL
Siapkan instance Cloud SQL untuk PostgreSQL untuk tutorial ini.
Buat instance PostgreSQL. Dalam tutorial ini, nama instance-nya adalah
rails-cloudsql-instance.Buat database di instance. Dalam tutorial ini, nama database produksi adalah
cat_list_production.
Menyiapkan lingkungan lokal untuk Rails
Untuk menyiapkan lingkungan lokal Anda untuk tutorial ini:
Untuk mengetahui informasi tambahan tentang cara menginstal Rails dan dependensinya, lihat panduan resmi Mulai menggunakan Rails.
Setelah menyelesaikan prasyarat, buat dan deploy aplikasi Rails dengan menggunakan Cloud SQL untuk PostgreSQL. Bagian berikut akan memandu Anda mengonfigurasi, menghubungkan ke Cloud SQL untuk PostgreSQL, dan men-deploy aplikasi.
Membuat aplikasi baru untuk mencantumkan kucing
Jalankan perintah
rails newuntuk membuat aplikasi Rails baru. Aplikasi ini menyimpan daftar kucing di Cloud SQL untuk PostgreSQL.rails new cat_sample_appBuka direktori yang berisi aplikasi Rails yang dihasilkan.
cd cat_sample_app
Menjalankan aplikasi secara lokal
Untuk menjalankan aplikasi Rails baru di komputer lokal Anda:
Mulai server web lokal:
bundle exec bin/rails serverDi browser, buka http://localhost:3000/
Aplikasi contoh menampilkan logo Rails dengan versi Rails dan Ruby.
Buat scaffolding untuk daftar kucing
Buat struktur untuk resource bernama Cat yang digunakan untuk membentuk daftar
kucing beserta nama dan usianya.
Buat kerangka.
bundle exec rails generate scaffold Cat name:string age:integerPerintah ini menghasilkan model, pengontrol, dan tampilan untuk resource
Cat.invoke active_record create db/migrate/20230922063608_create_cats.rb create app/models/cat.rb invoke test_unit create test/models/cat_test.rb create test/fixtures/cats.yml invoke resource_route route resources :cats invoke scaffold_controller create app/controllers/cats_controller.rb invoke erb create app/views/cats create app/views/cats/index.html.erb create app/views/cats/edit.html.erb create app/views/cats/show.html.erb create app/views/cats/new.html.erb create app/views/cats/_form.html.erb create app/views/cats/_cat.html.erb invoke resource_route invoke test_unit create test/controllers/cats_controller_test.rb create test/system/cats_test.rb invoke helper create app/helpers/cats_helper.rb invoke test_unit invoke jbuilder create app/views/cats/index.json.jbuilder create app/views/cats/show.json.jbuilder create app/views/cats/_cat.json.jbuilderBuka file
config/routes.rbuntuk melihat konten yang dihasilkan berikut.Tambahkan
root 'cats#index'ke file.Simpan file tersebut, lalu tutup.
Uji aplikasi Rails seperti yang diinstruksikan sebelumnya.
Menggunakan Cloud SQL untuk PostgreSQL dengan App Engine
Cloud SQL untuk PostgreSQL adalah layanan database terkelola sepenuhnya untuk menyiapkan, memelihara, mengelola, dan mengatur database PostgreSQL relasional Anda diGoogle Cloud. Anda dapat menggunakan Cloud SQL di aplikasi Rails seperti database relasional lainnya.
Menyiapkan Cloud SQL untuk PostgreSQL
Untuk mulai menggunakan Cloud SQL dengan aplikasi Rails Anda dalam produksi:
Tambahkan gem
pgdanappengineke fileGemfile.bundle add pg bundle add appengineGemfileRails berisi entrigemtambahan berikut:Untuk mengonfigurasi aplikasi Rails agar terhubung dengan Cloud SQL, buka file
config/database.yml. Setelan database boilerplate berikut untuk SQLite ditampilkan:Konfigurasi nama koneksi instance Cloud SQL untuk lingkungan produksi App Engine.
Ambil nama koneksi instance.
gcloud sql instances describe rails-cloudsql-instanceSalin nilai di samping
connectionName.
Ubah konfigurasi database produksi
database.ymlmenjadi berikut:Dengan:
[YOUR_POSTGRES_USERNAME]mewakili nama pengguna instance Cloud SQL untuk PostgreSQL Anda.[YOUR_POSTGRES_PASSWORD]mewakili sandi instance Cloud SQL untuk PostgreSQL Anda.[YOUR_INSTANCE_CONNECTION_NAME]mewakili nama koneksi instance yang Anda salin di langkah sebelumnya.
Aplikasi Rails kini disiapkan untuk menggunakan Cloud SQL saat men-deploy ke lingkungan fleksibel App Engine.
Men-deploy aplikasi ke lingkungan fleksibel App Engine
Lingkungan fleksibel App Engine menggunakan file bernama app.yaml untuk menjelaskan konfigurasi deployment aplikasi. Jika file ini tidak ada, gcloud CLI akan mencoba menebak konfigurasi deployment. Namun, Anda harus menentukan file untuk memberikan setelan konfigurasi yang diperlukan untuk kunci rahasia Rails dan Cloud SQL.
Untuk mengonfigurasi aplikasi contoh agar dapat di-deploy ke App Engine, buat file baru bernama app.yaml di root direktori aplikasi Rails, lalu tambahkan kode berikut:
Mengonfigurasi kunci rahasia Rails dalam file app.yaml
Saat aplikasi Rails di-deploy ke lingkungan production, tetapkan variabel lingkungan SECRET_KEY_BASE dengan kunci rahasia untuk melindungi data sesi pengguna. Variabel lingkungan ini dibaca dari file config/secrets.yml di aplikasi Rails Anda.
Buat kunci rahasia baru.
bundle exec bin/rails secretSalin kunci rahasia yang dibuat.
Buka file
app.yamlyang Anda buat sebelumnya, lalu tambahkan bagianenv_variables.env_variablesmenentukan variabel lingkungan di lingkungan fleksibel App Engine. Fileapp.yamlakan terlihat seperti contoh berikut dengan[SECRET_KEY]diganti dengan kunci rahasia Anda.
Konfigurasi instance Cloud SQL dalam file app.yaml
Selanjutnya, konfigurasi lingkungan fleksibel App Engine untuk menggunakan instance Cloud SQL yang ditentukan dengan memberikan nama koneksi instance Cloud SQL dalam file konfigurasi app.yaml.
Buka file
app.yaml, lalu tambahkan bagian baru bernamabeta_settings.Tentukan parameter bertingkat
cloud_sql_instancesdengan nama koneksi instance sebagai nilai.app.yamlakan terlihat seperti berikut:
Membuat aplikasi lingkungan fleksibel App Engine
Jika ini adalah pertama kalinya Anda men-deploy aplikasi, Anda perlu membuat aplikasi lingkungan fleksibel App Engine dan memilih region tempat Anda ingin menjalankan aplikasi Rails.
Buat aplikasi App Engine.
gcloud app createPilih region yang mendukung lingkungan fleksibel App Engine untuk aplikasi Ruby. Baca selengkapnya tentang Region dan zona.
Men-deploy versi baru
Selanjutnya, deploy versi baru aplikasi Rails yang dijelaskan dalam file app.yaml tanpa mengalihkan traffic dari versi penayangan default saat ini dengan menjalankan perintah ini:
gcloud app deploy --no-promote
Mungkin perlu waktu beberapa menit untuk menyelesaikan deployment. Tunggu pesan berhasil. Anda dapat melihat versi yang di-deploy di daftar versi App Engine.
Setelah men-deploy versi baru, jika Anda mencoba mengakses versi baru ini, pesan error berikut akan ditampilkan karena Anda belum memigrasikan database.

Memberikan izin yang diperlukan untuk gem appengine
Selanjutnya, berikan akses ke akun layanan cloudbuild untuk menjalankan migrasi database produksi dengan gem appengine.
Mencantumkan project yang tersedia.
gcloud projects listDi output, temukan project yang ingin Anda gunakan untuk men-deploy aplikasi, lalu salin nomor project.
Tambahkan anggota baru ke kebijakan IAM project Anda untuk peran
roles/editoragar dapat menjalankan migrasi database. GantiPROJECT_IDdengan project ID Google Cloud Anda dan gantiPROJECT_NUMBERdengan nomor project yang Anda salin di langkah sebelumnya.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/editor
Memigrasikan database Rails
Migrasi database Rails digunakan untuk memperbarui skema database Anda tanpa
menggunakan sintaksis SQL secara langsung. Selanjutnya, Anda akan memigrasikan database cat_list_production.
Gem appengine menyediakan tugas Rake appengine:exec untuk menjalankan perintah
terhadap versi aplikasi yang di-deploy terbaru di lingkungan fleksibel App Engine
produksi.
Memigrasikan database
cat_list_productionCloud SQL untuk PostgreSQL dalam produksi.bundle exec rake appengine:exec -- bundle exec rake db:migrateAnda akan melihat output yang mirip dengan:
---------- EXECUTE COMMAND ---------- bundle exec rake db:migrate Debuggee gcp:787021104993:8dae9032f8b02004 successfully registered == 20230922063608 CreateCats: migrating ======================================= -- create_table(:cats) -> 0.0219s == 20230922063608 CreateCats: migrated (0.0220s) ============================== ---------- CLEANUP ----------Untuk memverifikasi migrasi database, masukkan URL berikut di browser Anda:
https://VERSION_ID-dot-PROJECT_ID.REGION_ID.r.appspot.comGanti kode berikut:
VERSION_ID: Versi baru aplikasi yang Anda deploy sebelumnya. Untuk mendapatkan daftar versi, gunakangcloud app versions list. Item versi layanan default terakhir adalah deployment terbaru.PROJECT_ID: Project ID Google Cloud AndaREGION_ID: Kode yang ditetapkan App Engine ke aplikasi Anda
Berikut yang ditampilkan untuk deployment yang berhasil:

Memigrasikan traffic ke versi baru
Terakhir, arahkan traffic ke versi yang baru di-deploy menggunakan perintah berikut:
gcloud app services set-traffic default --splits VERSION=1
Versi baru aplikasi kini dapat diakses dari URL berikut:
https://PROJECT_ID.REGION_ID.r.appspot.com
Membaca log App Engine
Setelah men-deploy aplikasi Rails, Anda mungkin ingin membaca log. Anda dapat membaca log aplikasi menggunakan Logs Explorer yang ada di konsol Google Cloud .
Anda dapat mempelajari lebih lanjut cara membaca log menggunakan gcloud CLI.
Membersihkan resource
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar tidak lagi menggunakan kuota dan menimbulkan tagihan. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Hapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di Konsol Google Cloud , buka halaman Manage resources.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus versi App Engine
Untuk menghapus versi aplikasi:
- Di konsol Google Cloud , buka halaman Versions untuk App Engine.
- Pilih kotak centang untuk versi aplikasi non-default yang ingin Anda hapus.
- Untuk menghapus versi aplikasi, klik Hapus.
Menghapus instance Cloud SQL
Untuk menghapus instance Cloud SQL:
- Di konsol Google Cloud , buka halaman Instances.
- Klik nama instance SQL yang ingin Anda hapus.
- Untuk menghapus instance, klik Hapus, lalu ikuti petunjuknya.