Runtime Ruby adalah stack software yang bertanggung jawab untuk menginstal kode aplikasi dan dependensi Anda, lalu menjalankan aplikasi tersebut di lingkungan fleksibel.
Versi Ruby
Ruby 3.3 menggunakan buildpacks. Untuk mengetahui daftar lengkap versi Ruby yang didukung, dan versi Ubuntu yang sesuai, lihat Jadwal dukungan runtime.
Untuk menggunakan versi Ruby yang didukung, Anda harus:
Tentukan versi Ruby di
Gemfile
Anda.RUBY VERSION ruby 3.3.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,3.3.x
Versi sebelumnya
Untuk menggunakan 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.
Dukungan untuk runtime Ruby lainnya
Jika perlu menggunakan versi Ruby yang tidak didukung, Anda dapat membuat runtime kustom dan memilih image dasar yang valid dengan versi Ruby yang Anda butuhkan.
Untuk image dasar yang disediakan Google atau image dasar Docker Ruby, lihat Mem-build runtime kustom.
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 di 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
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. Dengan App Engine, Anda tidak dapat 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 instance.