Bear Su's Blog

RailsFun-0907筆記

受到朋友的邀請

藉著這機會參加了一直很想去但又沒去的 RailsFun 聚會

得到了蠻多新知識

在下次聚會之前可以來好好研究一下

Gitflow


如何利用 git branch 來協助軟體開發,在幾年前就有人提出了 gitflow 的概念

以下是幾篇推薦的文章:

Git flow 開發流程

Bear 實驗室: 什麼是Git flow ? 如何在SourceTree使用Git flow管理開發!

git-flow cheatsheet

Ruby Web Crawler


利用 rest-client 抓取網頁,並用 nokogiri 解析取得想要的資訊

在開始開發網頁爬蟲以前,需要先對爬取的網頁進行分析

分析的工具可以使用 Google Chrome 的開發者工具來檢視網頁內容,以了解資料的呈現規則

有些需要帶有參數的網頁,可以透過開發者工具網路的頁籤檢視請求內容

開發一個簡單的網頁爬蟲首先要能夠取得頁面,透過 rest-client 可以很容易的發送帶有參的送請求

再來需要將回傳的頁面透過 nokogiri 進行解析

nokogiri 解析後的回傳的物件,我們可以透過所提供的方法,依 css selector 取得所要的資料

以下是有使用到的 gem:

Regex Practice


在解析網頁時常常會利用正規表示式來處理,以下是好用的參考網頁

http://rubular.com/

https://regexone.com/

Use ActiveRecord in Ruby Script


希望能夠將網頁爬蟲抓取的資料寫進資料庫,可以使用 active-record

這裡需要紀錄資料庫連線資訊的 database.yml ,這份檔案可以從任一 Rails 專案中取得範本

database.yml 放在目錄下,便可以透過以下程式碼,讓 ActiveRecord 載入資料庫連線資訊:

require "active_record"
require "yaml"

database_config_file_path = "#{__dir__}/database.yml"
ActiveRecord::Base.establish_connection(
  # load development environment setting
  YAML.load_file(database_config_file_path)["development"]
)

但如何建立資料表跟 Model 呢?

最簡單的方法就是開一個 Rails 專案跑 Migration 吧 :P

active-record

yml

一些有關rails model欄位設計的原則


分享了一些實務上的經驗:連結

推薦的 gem:

  • enumerize 有些欄位的值是有限選項的,譬如付款狀態,這時在資料庫可以用整數型態儲存,在程式中則用比較有意義的名稱來操作。這個 gem 支援 simple_form 18n ,在最下拉式選單的時候很方便

  • default_value_for 以往除了在資料庫設定預設值,有時也需要用 before_save 來設定,使用這個 gem 能夠少寫一些程式碼

  • uidable 幫助產生 uid 欄位的值,預設使用 Array.new(10){[*'a'..'z', *'0'..'9'].sample}.join 產生亂數,但也可以透過覆寫gen_* 方法使用自己的產生邏輯

  • awesome_nested_set 用來儲存樹狀結構的 gem

  • aasm 安安,有聽過狀態機嗎?

Database Comparition


memcached 超級快,但只有鍵值結構的存取方式

redis 很快,支援許多資料結構

mongodb javascript 的好朋友

elasticsearch 很熱門的搜尋引擎

ssdb redis 的替代方案?

couchdb 可以直接開出 WEB API 存取資料


如果覺得這篇文章對您有所幫助,歡迎贊助我一杯咖啡 ☕️

祝您有美好的一天 ❤️