Runtime Ruby adalah stack software yang bertanggung jawab untuk menginstal kode aplikasi dan dependensi Anda, lalu menjalankan aplikasi tersebut di lingkungan fleksibel.
Versi
3.2
dibuat menggunakan buildpack, yang mengharuskan Anda memilih sistem operasi di fileapp.yaml
. Misalnya, untuk menggunakan Ruby 3.2, Anda harus menentukan Ubuntu 22 sebagai sistem operasi.Versi
3.1
dan yang lebih lama dibangun menggunakan Docker.
Untuk mengetahui daftar lengkap versi Ruby yang didukung, dan versi Ubuntu yang sesuai, lihat Jadwal dukungan runtime.
Penafsir
Versi runtime baru
Untuk versi 3.2, Anda harus menyertakan setelan runtime_config
dan operating_system
dalam file app.yaml
untuk menentukan sistem operasi.
Untuk menggunakan Ruby 3.2, Anda harus:
Tentukan versi Ruby di
Gemfile
Anda.RUBY VERSION ruby 3.2.x
Instal gcloud CLI versi 420.0.0 atau yang lebih baru. Anda dapat memperbarui alat CLI dengan menjalankan perintah
gcloud components update
. Untuk melihat versi yang diinstal, Anda dapat menjalankan perintahgcloud version
.Tentukan setelan
operating_system
di fileapp.yaml
Anda:runtime: ruby env: flex runtime_config: operating_system: "ubuntu22"
Jika ingin, Anda dapat menentukan versi penafsir Ruby menggunakan file .ruby-version
di direktori aplikasi Anda. Misalnya,
Versi sebelumnya
Untuk runtime Ruby versi 3.1 dan yang lebih lama, tentukan versi penafsir Ruby menggunakan file .ruby-version
di direktori aplikasi Anda.
Jika file ini ada, runtime akan menginstal Ruby versi yang diminta saat Anda men-deploy aplikasi, menggunakan rbenv. Jika versi yang diminta tidak dapat diinstal, App Engine akan menampilkan pesan error selama deployment.
Jika Anda tidak menyediakan file .ruby-version
, runtime Ruby akan ditetapkan secara default ke versi 2.7. Perhatikan bahwa versi default dapat berubah kapan saja, jadi sebaiknya aplikasi Anda menentukan versi Ruby.
Dependensi
Runtime mencari file Gemfile
dalam direktori sumber aplikasi Anda dan menggunakan Bundler
untuk menginstal dependensi apa pun sebelum memulai aplikasi Anda. Untuk informasi selengkapnya tentang mendeklarasikan dan mengelola paket, lihat Menggunakan Library Ruby.
Menggunakan library C dengan Ruby
Untuk library Ruby yang memerlukan ekstensi C, header untuk versi Ruby saat ini dan paket Ubuntu berikut sudah diinstal sebelumnya pada sistem.
autoconf
build-essential
ca-certificates
cmake
curl
file
git
imagemagick
libcurl3
libcurl3-gnutls
libcurl4-openssl-dev
libffi-dev
libgdbm-dev
libgit2-dev
libgmp-dev
libicu-dev
libjemalloc-dev
libjemalloc1
libmagickwand-dev
libmysqlclient-dev
libncurses5-dev
libpq-dev
libqdbm-dev
libreadline6-dev
libsqlite3-dev
libssl-dev
libxml2-dev
libxslt-dev
libyaml-dev
libz-dev
systemtap
tzdata
Paket-paket ini memungkinkan penginstalan library Ruby yang paling populer. Jika aplikasi memerlukan dependensi level sistem operasi tambahan, Anda harus menggunakan runtime kustom berdasarkan runtime ini untuk menginstal paket yang sesuai.
Proses mulai aplikasi
Runtime memulai aplikasi Anda menggunakan entrypoint
yang ditentukan dalam app.yaml
. Titik entri akan memulai proses yang merespons permintaan HTTP di port yang ditentukan oleh variabel lingkungan PORT
.
Contoh:
entrypoint: bundle exec rails server -p $PORT
Sebagian besar aplikasi web menggunakan server web yang didukung Rack seperti Puma, Unicorn, atau Thin.
Anda harus menambahkan server sebagai dependensi di file konfigurasi Gemfile
aplikasi Anda. Runtime akan menginstal semua dependensi sebelum titik entri Anda dipanggil.
source "https://rubygems.org"
gem "rack"
gem "puma"
Contoh titik entri yang menggunakan puma untuk aplikasi Rails:
entrypoint: bundle exec rails server Puma -p $PORT
Contoh titik entri yang menggunakan puma untuk aplikasi Rack apa pun:
entrypoint: bundle exec rackup -s Puma -p $PORT
Untuk aplikasi yang dapat menangani permintaan tanpa server Rack, Anda cukup menjalankan skrip ruby:
entrypoint: bundle exec ruby app.rb
Memperpanjang runtime
Anda dapat menggunakan runtime kustom untuk menambahkan fungsi lain ke aplikasi Ruby yang berjalan di lingkungan fleksibel App Engine. Untuk mengonfigurasi runtime kustom, ganti baris berikut di file app.yaml
Anda:
runtime: ruby
dengan baris ini:
runtime: custom
Anda juga harus menambahkan file Dockerfile
dan .dockerignore
dalam direktori yang sama yang berisi file app.yaml
.
Buka dokumentasi Runtime kustom untuk mempelajari cara menentukan Dockerfile dalam runtime kustom.
Variabel lingkungan
Variabel lingkungan berikut ditetapkan oleh lingkungan runtime:
Variabel Lingkungan | Deskripsi |
---|---|
GAE_INSTANCE |
Nama instance saat ini. |
GAE_MEMORY_MB |
Jumlah memori yang tersedia untuk proses aplikasi. |
GAE_SERVICE |
Nama layanan yang ditentukan dalam file app.yaml aplikasi Anda, atau jika tidak ada nama layanan yang ditentukan, nama akan ditetapkan ke default . |
GAE_VERSION |
Label versi aplikasi saat ini. |
GOOGLE_CLOUD_PROJECT |
Project ID yang terkait dengan aplikasi Anda, yang terlihat di konsol Google Cloud |
PORT |
Port yang akan menerima permintaan HTTP. |
RACK_ENV |
Tetapkan ke production . |
RAILS_ENV |
Tetapkan ke production . |
RAILS_SERVE_STATIC_FILES |
Tetapkan ke true . |
Anda dapat menetapkan variabel lingkungan tambahan dengan app.yaml
.
Server metadata
Setiap instance aplikasi Anda dapat menggunakan server metadata Compute Engine untuk mengkueri informasi tentang instance ini, termasuk nama host, alamat IP eksternal, ID instance, metadata kustom, dan informasi akun layanan. App Engine tidak mengizinkan Anda menetapkan metadata kustom untuk setiap instance, tetapi Anda dapat menetapkan metadata kustom tingkat project serta membacanya dari instance App Engine dan Compute Engine.
Fungsi contoh ini menggunakan server metadata untuk mendapatkan alamat IP eksternal untuk instance yang menjalankan runtime Ruby versi 3.1 dan yang lebih lama, serta untuk instance yang menjalankan versi 3.2 dan yang lebih baru.
Perlu diperhatikan bahwa Anda harus mengupdate file app.yaml
untuk menggunakan versi baru. Lihat runtime Ruby untuk mengetahui informasi selengkapnya tentang cara menggunakan runtime baru.