使用名爲Capistrano的軟件部署Rails應用程序是很常見的。如果您發現文件app/Capfile
和app/config/deploy.rb
那麼您的應用程序正在使用它。 Capistrano的典型工作流程爲:
- 從源代碼管理系統信息庫中獲取應用程序的本地副本。使用
git clone
從GitHub)本地
- 編輯文件(和測試,但你可能不存在)
- 提交和推送,以源頭控制
- 運行
cap deploy
做到所有這一切可能需要的東西,例如重新編譯asssets
Capistrano的確實(在最基本的用法)是什麼:
- 創建
your-app-name/releases/<date-filename>/
- 子目錄獲得從源頭上控制庫中的最新代碼到該目錄(如
git pull
)
- 將
your-app-name/current
中的符號鏈接替換爲新目錄中的一個
- 重新啓動服務器(如果使用Phusion Passenger,
touch your-app-name/current/tmp/restart.txt
的竅門,否則,您可能需要重新啓動Web服務器
正如在另一個答案中指出的,「資產」(CSS,JS,圖像)的更改將需要重新編譯。我認爲從<your-app-name>
子目錄運行bundle exec rake assets:precompile
就足夠了,但如果事情搞砸了,首先運行bundle exec rake assets:clean
。
在某些情況下,capistrano和源代碼管理設置爲要求部署使用執行部署的用戶的本地憑據 - ssh-agent
和ssh-add
命令支持此功能。如果您的源代碼管理系統不允許直接從服務器訪問(如果設置的話,您會在app/config/deploy.rb
中看到一行ssh_options[:forward_agent] = true
),您將需要這些信息。
當然,還有許多其他依賴項需要根據您的環境進行管理。如果你有一個遠程先進的環境,你應該做的工作是搞清楚如何部署正確的方式,可能與capistrano。
嗨,謝謝你的建議。我刪除了公共/資產並運行預編譯,然後重新啓動了機器,但仍未更新。我正在編輯的文件位於名爲initializers的子文件夾中的config文件夾中。該文件很簡單,只是三個獨立的if語句來處理某些操作的調度。我只改變了這些行動安排的時間間隔。 –
初始化子目錄中文件的名稱是什麼。有一些ruby腳本觸發cronjobs,例如需要運行控制檯命令 –
它被稱爲purge_old_pickups.rb - 大概是這個應用程序的自定義文件。 –