[Rails] Railtie

初探 Railtie Railtie 為 Rails 與其他 component 提供了整合的接口, Rails::Application 繼承 Engine, Engine 又繼承 Railtie Rails 透過 Railtie 讀取 configurations, 建立 application 以及連接各個不同的 component (如: Active Record, Action View, Action Controller, Action Mailer), 使他們可以建立自己 »

[Rails] 專案部署前, 機器設定

1. update and upgrade system $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get autoremove $ sudo reboot 2. set timezone $ sudo dpkg-reconfigure tzdata // 測試 $ date 3. install required package sudo apt-get install curl zlib1g-dev build-essential »

[Rails] 使用 memcached 儲存 session

memcached 是一套 Name-Value Pair (NVP) 分散式記憶體快取系統, Key 的長度被限制在 250 characters, 儲存的資料不能超過 1 megabyte 要特別注意, memcached 不是 persistent data store, 只要關掉 memcahed 重開, 裡面的資料會通通不見 Rails 專案 Gemfile 內加上 gem 'dalli' 執行 bundle install 接著將 config/enviroment/production »

[Rails] belongs_to optional (關聯資料非必填)

某天新增 Category 到本來的 Book (many to many) 遇到一個問題 因本來 Book 有做 sti,新增 Book 的 Category 時,query 會用此 id 找每種繼承 Book 的 sti 資料 (但 type 只會記錄一種),因而噴錯 後來查詢才發現 rails 版本 5.1 後的版本 , belongs_to 的關聯 model 預設改為必填 須添加參數 optional: true 才可以允許非必填 e.g. class Book < ApplicationRecord »

[Rails] with_indifferent_access

with_indifferent_access 這個方法可以讓我們同時使用 string、symbol 操作 hash key with indifferent access 方法在 ActiveSupport::HashWithIndifferentAccess 類別裡 example: 另外,hash 也有全部轉 symbol 的方法 symbolize_keys 與全部轉 string 的方法 stringify_keys »

[Rails] 壓縮 migrate 檔

如果 rails 專案夠大,migrate 檔可能會有上百隻 有時候在執行 migration 的時候跑很久,有沒有辦法可以整理它 ? 答案是有的 使用 Squasher 這隻 gem。可以將 migrate 檔壓縮成一隻 Install: # Gemfile.rb gem 'squasher', '>= 0.6.0' // setup squasher $ bundle binstub squasher Use 官方建議停止所有的 preloading systems (e.g. spring »