如何在 Heroku 上部署 Ruby on Rails 應(yīng)用程序——技術(shù)教程
介紹
對于任何開發(fā)者來說,最令人滿足的事情就是將他們的開發(fā)成果構(gòu)建為參考源后提供給每個(gè)人。因此,在您的系統(tǒng)上本地預(yù)覽和開發(fā)一個(gè) Rails 應(yīng)用程序之后,接下來的步驟就是將它放到網(wǎng)上,以便其他人可以觀察到它。這稱為部署應(yīng)用程序?,F(xiàn)在 Heroku 來了。
它允許您快速部署 Ruby on Rails 應(yīng)用程序,并且對學(xué)習(xí)者來說很受歡迎,因?yàn)樗且粋€(gè)開源且“輕松”的推送部署系統(tǒng)。簡而言之,Heroku 幾乎可以為個(gè)人處理所有事情。讓我們檢查如何通過以下步驟在 Heroku 上部署 Ruby on Rails 應(yīng)用程序。
在 Heroku 云平臺上部署 Ruby on Rails 應(yīng)用程序的步驟
要在云端發(fā)布您的應(yīng)用程序,您需要遵循以下步驟。將 Ruby on Rails 應(yīng)用作為服務(wù)部署到 Heroku 平臺并不難。本指南將向您展示如何從本地服務(wù)器開始您的 RoR 應(yīng)用程序并將其部署到 Heroku。
本地設(shè)置
1. 創(chuàng)建一個(gè)新的 Heroku 帳戶。
2. 在您的機(jī)器上安裝Heroku CLI。
3. 安裝后,heroku命令現(xiàn)在可以在您的系統(tǒng)中使用了。使用您的 Heroku 帳戶憑據(jù)登錄。
4. 創(chuàng)建一個(gè)新的 ssh 密鑰,否則不可用,立即按 Enter 上傳現(xiàn)有的用于稍后推送代碼的 ssh 密鑰。
$ heroku 登錄heroku:輸入您的 Heroku 憑據(jù)電子郵件:schneems@example.com密碼:找不到現(xiàn)有的公鑰。你想生成一個(gè)嗎?[嗯]生成新的 SSH 公鑰。上傳 ssh 公鑰 /Users/adam/.ssh/id_rsa.pub
創(chuàng)建 Rails 應(yīng)用程序
觸發(fā)以下命令來創(chuàng)建 Rails 應(yīng)用程序。
免責(zé)聲明:- 這里我們使用在 Ubuntu 22.04.1 上運(yùn)行的 Ruby2.7.2 和 Rails 6.1.7
使用 Ruby 很有趣,但是您不能在 Heroku 上部署在 SQLite3 上運(yùn)行的應(yīng)用程序。PostgreSQL 是 Heroku 上數(shù)據(jù)庫的實(shí)用標(biāo)準(zhǔn)。如果您正在使用當(dāng)前的 RoR 應(yīng)用程序,請?zhí)砑?gem 'pg'。
對此:
注意:- 在開發(fā)過程中,PostgreSQL 是高度認(rèn)可的數(shù)據(jù)庫。由于您的開發(fā)環(huán)境和部署環(huán)境之間存在差異,因此保留了一個(gè)類比,這有助于防止在應(yīng)用程序中出現(xiàn)狡猾的錯誤。如果您的系統(tǒng)上尚未提供 Postgres,請?jiān)诒镜匕惭b它。
如果您使用以前的 Rails 版本授權(quán)在 Heroku 上提供靜態(tài)資產(chǎn)服務(wù)和日志記錄,請?jiān)?Gemfile 中添加 rails_12factor gem。
在部署新應(yīng)用程序期間,不需要 rails_12factor gem。但是如果你正在升級一個(gè)已經(jīng)存在的應(yīng)用程序,你可以刪除 rails_12factor gem,前提是你有正確的配置配置/環(huán)境/production.rb 文件:
# 配置/環(huán)境/production.rbconfig.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?如果 ENV["RAILS_LOG_TO_STDOUT"].存在?記錄器 = ActiveSupport::Logger.new(STDOUT)
Logger.formatter = config.log_formatter
config.Logger = ActiveSupport::TaggedLogging.new(Logger)結(jié)尾
現(xiàn)在重新安裝你的依賴項(xiàng)(生成一個(gè)新的 Gemfile.lock):
使用您的數(shù)據(jù)修改 database.yml 并確保config/database.yml使用 postgresql 適配器。
生產(chǎn):
<<: *默認(rèn)
數(shù)據(jù)庫:app_production生產(chǎn):
<<: *默認(rèn)
適配器:postgresql
數(shù)據(jù)庫:app_production
運(yùn)行腳手架命令來創(chuàng)建帖子。
創(chuàng)建并遷移數(shù)據(jù)庫。
在routes.rb中更改主頁面路由并啟動服務(wù)器
將您的代碼更改推送到 git
源代碼:deploying-rails-app
您也可以克隆代碼。這是存儲庫的源代碼:https://github.com/ishag-bac/Deploy
先決條件
由于我們要在 Heroku 上部署 Ruby on Rails 應(yīng)用程序,因此我們需要以下內(nèi)容。
Ruby/Rails 和 Git 的基本知識。
在本地計(jì)算機(jī)上安裝了 Ruby 2.5.0+ 和 Rails 6+ 版本。
經(jīng)過驗(yàn)證的 Heroku 帳戶。
如果尚未安裝 git,請?jiān)谀南到y(tǒng)中安裝,因?yàn)?Heroku 將依賴它進(jìn)行部署。
如果您的項(xiàng)目在 Git 中不可用,請?jiān)?git 中提交您的應(yīng)用程序更改。
您是否正在尋找精通 Ruby on Rails 且在開發(fā)和部署方面也非常熟練的開發(fā)人員?
立即聯(lián)系 Bacancy 并聘請Ruby on Rails 開發(fā)人員開始構(gòu)建您的夢想項(xiàng)目!
指定 Ruby 版本
Rails 6 需要 Ruby 2.5.0 或更高版本。默認(rèn)情況下,最新版本的 Ruby 安裝在 Heroku 中。但是,您可以使用 ruby 域特定語言在 Gemfile 中指定確切的版本。根據(jù)應(yīng)用程序中當(dāng)前運(yùn)行的 Ruby 版本,它可能如下所示:
相同版本的 Ruby 也應(yīng)該在本地運(yùn)行。您可以通過運(yùn)行來檢查 ruby 版本$紅寶石-v.
在 Heroku 上部署 Ruby on Rails 應(yīng)用程序
安裝 Heroku CLI 并登錄到您的 Heroku 帳戶后,確保您位于包含您的應(yīng)用程序的正確目錄路徑中,然后按照以下說明進(jìn)行操作。
在終端中使用以下命令在 Heroku 中創(chuàng)建應(yīng)用程序。
將您的代碼推送到 master 分支上的 Heroku。
注意:- 在部署之前檢查默認(rèn)分支名稱。如果它使用 master,請使用 git push heroku master。否則,使用 git push heroku main。
通過運(yùn)行遷移應(yīng)用程序的數(shù)據(jù)庫。
要用數(shù)據(jù)為您的數(shù)據(jù)庫播種,請運(yùn)行。
獲取您的應(yīng)用程序的 URL,并在瀏覽器中訪問。
訪問您的應(yīng)用程序
源代碼到 Heroku 的部署已經(jīng)完成。現(xiàn)在您可以指示執(zhí)行 Heroku 的流程類型。Heroku 通過在 dyno 中運(yùn)行相關(guān)命令來實(shí)現(xiàn)這個(gè)過程。[Dyno 是組成的基本單元,是 Heroku 服務(wù)器上的一個(gè)容器。]
確保您有一個(gè) dyno 使用以下命令運(yùn)行 web 進(jìn)程類型:
您可以檢查應(yīng)用程序測功機(jī)的狀態(tài)??梢酝ㄟ^應(yīng)用 heroku ps 命令列出應(yīng)用程序的所有正在運(yùn)行的測功機(jī)。
使用 heroku open,我們可以打開正在部署的應(yīng)用程序。
查看日志
如果應(yīng)用程序運(yùn)行不正?;蛴龅饺魏螁栴},則必須檢查日志。在 heroku logging 命令的幫助下,您可以獲得有關(guān)您的應(yīng)用程序的信息。
通過像這樣使用 –tail 標(biāo)志選項(xiàng)運(yùn)行命令,您還可以獲得整個(gè)日志流:
故障排除
如果您推送應(yīng)用程序并崩潰(heroku ps 顯示狀態(tài)崩潰),請檢查您的日志,以找出在推送應(yīng)用程序時(shí)到底出了什么問題。這里有一些問題。
開發(fā) Gems 和測試 Gems 的運(yùn)行時(shí)依賴性
如果您在部署時(shí)缺少 gem,請檢查您的 Bundler 組。Heroku 在沒有開發(fā)組或測試組的情況下構(gòu)建您的應(yīng)用程序,如果您的應(yīng)用程序依賴于這些組之一的 gem 來運(yùn)行,您應(yīng)該將其移出該組。因此,在將 Ruby on Rails 應(yīng)用程序部署到 Heroku 之前,測試它是否在本地工作,然后將其推送到 Heroku。
結(jié)論
我們希望您發(fā)現(xiàn)我們的綜合指南很有用,并會嘗試在 Heroku 上部署 ruby on rails 應(yīng)用程序。如有任何疑問,請隨時(shí)與我們聯(lián)系。我們很樂意協(xié)助您進(jìn)行技術(shù)方面的努力。如果您感興趣,可以找到相關(guān)的Ruby on Rails 教程。請?jiān)谏缃幻襟w上和您的朋友中分享此博客,如果您有任何建議,請發(fā)表評論。很高興能幫助你!
(言鼎科技)專做語聊app,直播商城app,預(yù)約上門app,同城外賣跑腿app,家政服務(wù)app,醫(yī)療程序,歡迎資訊!