iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Software Development

Rails 開發,每日一套件介紹! 系列 第 16

Day 16: 背景作業的強力側踢 - Sidekiq (上)

  • 分享至 

  • xImage
  •  

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
今天是每日一套件的第 16 天,繼續跟著我一起認識 Rails 開發好用的 30 個套件,建立出自己的常用套件庫吧!

Day 16: Sidekiq

Sidekiq 一個我納入題目很久的套件,雖然他的簡介很簡單,不過功力不到,還不能講得很清楚。

Simple, efficient background jobs for Ruby.
為 Ruby 提供簡單、有效的背景運作。

是 Rails 框架中經常使用的背景程式處理的套件。背景程式可以協助在背景處理一些費時、或是耗費資源的工作。
避免網站被使用者重複觸發造成網站卡住,或者消耗更多資源。但仔細研究下來,其實能講的範圍很廣泛,再來會牽扯到 Redis,是目前的我還不熟悉的環境。

不過凡事總有個開頭,所以打算先寫下來,後續如我研究得更完整了,再來補充更完整。

首先,他的名字跟logo,我相信應該是取自武術中的 sidekick 側踢。不過這不是我的領域範圍,無法說什麼,只知道你會查到一堆跟李小龍有關的事情。

再來,sidekiq 雖然是個開源的後台框架,他也有付費的的商業版本。另外,要注意它的 license 是 LGPL,也就是號稱寬鬆版的 GPL。以下是這兩種 license 的簡單介紹:

GPL(General Public License)是一種自由軟體授權,保障了使用者的權利,要求任何使用、修改或散佈該軟體的人都必須開放原始碼,並讓其衍生作品同樣遵循GPL。這鼓勵共享和合作,確保開源生態系統的健康。

LGPL(Lesser General Public License)是GPL的變種。LGPL允許將其連結到非GPL軟體中,而不要求整個應用程式都遵循GPL,保護了庫的開發者和使用者的靈活性。

GPL 最為人詬病的就是租體的那一行,其實這原本算是開源的美意,但這樣自由的權利是以「copyleft」條款為基礎,依據了copyleft 條款,一但你使用了跟 GPL 有關的套件做開發,你也被必須要求使用後的衍生作品,也需要以同等的授權方式釋出。也就是一日開源,終身開源。這就大家見仁見智了。

至於 LGPL 其實也是差不多。唯一的差別似乎是 如果是單純呼叫函式庫並不會被 LGPL 給規範。
(有錯的話請大力鞭打我!)

提醒完畢,回歸正題:

如何安裝與使用:

首先,要先用 redis

brew install redis
redis-server

接著老招起手式 bundle add

bundle add sidekiq

接著,如果我們要將ActiveJob的非同步處理做設定,要透過 config/environments/development.rb 切換使用sidekiq,將 active_job 延後執行時,queue 到哪個 adapter。

config.active_job.queue_adapter = :sidekiq

接著,設定載入路徑、adapter 類型,以及 yml 檔
config/application.rb 中加入設定,讓 Rails 可以找到 job 檔案

config.eager_load_paths += %W( #{config.root}/app/jobs )

config/sidekiq.yml

:queues:
 - default
 - mailers

更多的設定,請參考官方文件。

要啟用 sidekiq,請使用指令:

$ bundle exec sidekiq

這邊先到這裡,為了不要誤人子弟,等我研究完 redis 在完成下篇!
我們明天見!


上一篇
Day 15: 狀態打檔器 - AASM
下一篇
Day 17: 淺談隱藏在 Rails 中的美洲獅 - PUMA
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言