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.4 menggunakan buildpack. 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
GemfileAnda.RUBY VERSION ruby "3.4.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_systemdi fileapp.yamlAnda:runtime: ruby env: flex runtime_config: operating_system: "ubuntu22"Jika ingin, Anda dapat menentukan versi penafsir Ruby menggunakan file
.ruby-versiondi direktori aplikasi Anda. Misalnya,3.4.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 Ruby Docker, lihat Membangun 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 mengetahui 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.
autoconfbuild-essentialca-certificatescmakecurlfilegitimagemagicklibcurl3libcurl3-gnutlslibcurl4-openssl-devlibffi-devlibgdbm-devlibgit2-devlibgmp-devlibicu-devlibjemalloc-devlibjemalloc1libmagickwand-devlibmysqlclient-devlibncurses5-devlibpq-devlibqdbm-devlibreadline6-devlibsqlite3-devlibssl-devlibxml2-devlibxslt-devlibyaml-devlibz-devsystemtaptzdata
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
$PORT akan diganti secara normal, tetapi sintaksis shell seperti if, for, dan while yang disematkan dalam perintah entrypoint tidak akan berfungsi.
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, 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 instance.