Menentukan dependensi di Ruby
Cloud Run Functions yang ditulis dalam Ruby menggunakan bundler untuk mengakses dependensi. Dependensi dapat didownload saat fungsi Anda di-deploy, atau dikemas secara lokal bersama fungsi Anda.
Setiap fungsi harus menyediakan Gemfile yang menentukan gem functions_framework,
beserta gem tambahan yang diperlukan oleh fungsi. Gemfile harus berada dalam
direktori yang sama dengan file app.rb yang berisi kode fungsi Anda. Selain itu,
fungsi Anda harus menyediakan lockfile yang menentukan semua
dependensi transitif dan versi persisnya. File ini, Gemfile.lock, juga
berada di direktori yang sama bersama Gemfile.
Saat Anda men-deploy fungsi, Cloud Run Functions akan mendownload dan menginstal
dependensi yang dideklarasikan dalam Gemfile dan Gemfile.lock menggunakan bundler.
Gemfile mencantumkan paket yang diperlukan oleh fungsi Anda, beserta
batasan versi opsional apa pun. Untuk mengetahui detail selengkapnya,
lihat Referensi gemfile.
Berikut adalah contoh Gemfile:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "google-cloud-storage", "~> 1.29"
Jalankan perintah berikut untuk menginstal
gem functions_framework dan dependensi lainnya:
bundle install
Gemfile.lock dihasilkan oleh bundler saat menganalisis dependensi Anda,
dan membekukan versi persis dari setiap gem yang akan diinstal. Hal ini memastikan, misalnya,
bahwa fungsi Anda di-deploy dengan versi dependensi yang sama dengan
yang digunakan dalam pengujian lokal. Format persis dari Gemfile.lock bersifat
pribadi untuk bundler dan tidak dimaksudkan untuk diedit secara manual.
Jika sudah menggunakan bundler untuk menginstal dependensi dan menjalankan pengujian
secara lokal, Anda mungkin sudah memiliki file Gemfile.lock. Jika belum, Anda
dapat membuatnya dengan menjalankan:
bundle lock
Functions Framework adalah dependensi wajib untuk semua fungsi. Meskipun Cloud Run Functions menginstalnya untuk Anda saat fungsi tersebut dibuat, sebaiknya sertakan sebagai dependensi eksplisit agar lebih jelas.
Jika fungsi
Anda bergantung pada dependensi pribadi, sebaiknya
duplikasi functions-framework ke registry pribadi Anda. Sertakan functions-framework
yang diduplikasi sebagai dependensi ke fungsi Anda untuk menghindari penginstalan
paket dari internet publik.
Mengemas dependensi lokal
Anda juga dapat mengemas dan men-deploy dependensi bersama fungsi Anda. Pendekatan ini berguna jika dependensi Anda tidak tersedia melalui pengelola paket rubygems.
Untuk mengemas gem secara lokal, sertakan gem dalam direktori dalam struktur direktori
fungsi Anda, dan berikan jalur dalam entri Gemfile dependensi. Direktori gem
harus menyertakan file gemspec yang valid, dan harus ditempatkan dalam
hierarki direktori fungsi agar kodenya
di-deploy bersama dengan fungsi Anda. Misalnya, Anda dapat menggunakan
struktur direktori seperti berikut:
myfunction/
├── Gemfile
├── Gemfile.lock
├── app.rb
└── my_private_gem/
├── lib/
| └── my_private_gem.rb
└── my_private_gem.gemspec
Entri Gemfile mungkin terlihat seperti ini:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "my_private_gem", path: "./my_private_gem"
Lihat Referensi gemfile untuk pembahasan selengkapnya tentang mereferensikan jalur gem lokal.