在 Ruby 中指定依附元件
以 Ruby 編寫的 Cloud Run 函式會使用 bundler 存取依附元件。您可以在部署函式時下載依附元件,或在本機與函式一起封裝。
每個函式都必須提供 Gemfile
,指定 functions_framework
寶石,以及函式所需的任何其他寶石。Gemfile
必須與包含函式程式碼的 app.rb
檔案位於同一目錄。此外,您的函式必須提供鎖定檔案,指定所有傳遞依附元件及其確切版本。這個檔案 Gemfile.lock
也位於與 Gemfile
相同的目錄中。
部署函式時,Cloud Run 函式會使用 bundler
下載並安裝 Gemfile
和 Gemfile.lock
中宣告的依附元件。
Gemfile
會列出函式所需的套件,以及任何選用的版本限制。詳情請參閱 Gemfile 參考資料。
以下是 Gemfile
範例:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "google-cloud-storage", "~> 1.29"
您可以執行下列指令,安裝 functions_framework
gem 和其他依附元件:
bundle install
當 bundler 分析依附元件並凍結要安裝的每個 Gem 的確切版本時,就會產生 Gemfile.lock
。這樣可確保函式在部署時,使用與本機測試相同的依附元件版本。Gemfile.lock
的確切格式是 Bundler 專用的,不建議手動編輯。
如果您已使用 Bundler 安裝依附元件並在本機執行測試,那麼您可能已經有 Gemfile.lock
檔案。如果沒有,您可以執行以下指令來產生一個:
bundle lock
Functions Framework 是所有函式必備的依附元件。雖然 Cloud Run 函式會在函式建立時代為安裝,但為了清楚起見,建議您將其納入為明確的依附元件。
如果函式需要私人依附元件,建議您將 functions-framework
鏡像複製到私人登錄。將鏡像 functions-framework
納入函式的依附元件,避免從公開網際網路安裝套件。
封裝本機依附元件
您也可以將依附元件與函式一起封裝及部署。如果您無法透過 rubygems 套件管理工具使用依附元件,這種做法就很實用。
如要在本機封裝寶石,請將寶石納入函式的目錄結構目錄中,並在依附元件的 Gemfile
項目中提供路徑。gem 目錄必須包含有效的 gemspec
檔案,且必須位於函式的目錄階層中,才能讓程式碼與函式一併部署。舉例來說,您可以採用如下的目錄結構:
myfunction/ ├── Gemfile ├── Gemfile.lock ├── app.rb └── my_private_gem/ ├── lib/ | └── my_private_gem.rb └── my_private_gem.gemspec
Gemfile
項目可能會如下所示:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "my_private_gem", path: "./my_private_gem"
如要進一步瞭解如何參照本機寶石路徑,請參閱 Gemfile 參考資料。