about 2 years ago

請講解 「繼承」這個觀念:

Inheritance(繼承)的意思就是繼承者擁有被繼承者的特性,用於類別(class)的繼承,所以子類別可以呼叫父類別的方法。

為什麼 Rails 要分 production, test, development 三種環境?

不同環境的差異在於有不同的設定,除了資料庫設定 database.yml 裡分開設定之外,個別的環境設定放在 config/environments/development.rb、config/environments/test.rb 和 config/environments/production.rb,它們可以有不同的 Log 層級、Session 設定、Email 設定等等。

development environment 開發模式,用在你的開發的時候。

使用 Rails 開發可以快速的原因之一,就是當你修改一個小東西,只要重新整理瀏覽器就可以馬上看到修改後的結果。這個秘訣就在於 cache_classes = false 會讓每一次的 HTTP 請求都重新載入類別檔案。更仔細的說,當這個值是 false 的時候,Rails 會改用 Ruby 的 load 方法,每次執行都會重新載入一次。
Rails只有在連線是來自本地端的時候,才會將發生錯誤時的Call stack trace資訊給瀏覽器顯示。這個設定將所有連線都當做本地端連線,好讓開發模式時所有人連線都可以看到錯誤訊息。

test environment 測試模式,用在自動測試時。

不同於 development 或 production 在test模式,碰到例外會直接出現,出錯時瀏覽器不會顯示出 call stack trace 或 public/500.html 畫面。

production environment 正式上線模式,用在實際的上線運作環境。

cache_classes = true 表示在 production 中,類別檔案載入進記憶體中就快取起來了,效能提升。不像在 development 環境中每一次 HTTP 請求就會重新載入一次。
不同於 development,如果在 production 環境出現例外錯誤,不會顯示程式 call stack 訊息,而是回傳 public/500.html 頁面。

請玩 delayed_job 與 sidekiq 兩套 gem, 解釋他們的差異:

Sidekiq:利用 redis: key-value 來儲存要執行的任務去儲存work 然後去執行他。
delay_job:新增一個table把 work 丟進去執行。
相對來說 delay_job 不管是在local 還是heroku是非常容易操作及安裝的!

什麼時機要用 Helper, 什麼時機要用 Partial?

Partial:
- 檔案裡 HTML 超過兩頁(long template)
- HTML 內容高度重複(highly duplicated)
- 可獨立作為功能區塊(independent blocks)
Helper:
- 產生的 HTML code 需要與原始程式碼進行一些邏輯混合,但不希望 View 裡面搞得太複雜。
- 需要與 Rails 內建預設好的一些方便 Helper 交叉使用。
conclusion:
- partial 負責處理大片的 HTML code,或是之後要利用 ajax render 出來的片段。
- helper 則負責處理跟邏輯判斷有關的東西。

什麼時候要用 Service Object?

顧名思義,Service Object是因為有某些類似的特定功能,像是一個『service』,跟資料庫中的model並無直接關係,因此拉出來獨立成為一個class,在邏輯上會更容易管理。
- method邏輯極其複雜的時候
- 跨Model使用,無法特別歸類於特定Model
- 與外部服務有較多關連 - 並非重要功能
- 同一種method有許多類似的使用方法

← Rails即戰力課程第二週筆記 Rails即戰力課程第四週筆記 →