關於 Rails 中的 Form Object / Presenter 這些物件該怎麼用(一)

前陣子在 Review 新專案中同事的程式碼時,發現同事對像是 Service Object / Form Object 這類物件不太有概念。不過這個新專案因為是接手其他公司的專案,所以有不少地方要微調。至少那個值得吐槽的「因為 Controller 程式碼太長不知道放哪裡,就都丟去 Service Object 好了!」的神奇用法,完全沒有幫助改善程式碼。

也因為這個機會,我用了一點時間跟專案的同事分享了一下我對這些物件的看法。畢竟當出我也是搞不太懂,不過隨著了解物件導向和 Ruby 的語言特性,從這些角度切入後,就比較能理解該怎麼使用。

如何在沒有任何設定下產生 Rails 的 Docker Image

前陣子看到 Throughbot 這間在 Ruby 圈 算是蠻有名的公司做了一個叫做 Suspenders 的 Gem 主要是對 Rails 擴充,簡單說就是基於原本的 rails new 做了一個替代品,而這個替代品會自動幫你先做好一些原本要手動做的事情。

像是安裝好常用的 Gem、套版之類的,想了一下覺得五倍其實也很需要,不少新專案也都是從我這邊經手初始化的,有一個這樣的工具會省下不少時間。

所以 Bankai (卍解) 這個 Gem 就樣做出來了,裡面基本上就是設置好在五倍大多數時候用的標配 Ex. GitLab CI 設定、RSpec 等等

但是又發現好像不太夠用,有些時候有 Docker 會方便很多,但是 Bankai 現在做不到!

Rails 串接 ProxmoxVE API 自動化教學用虛擬機分配

之前有一段時間因為用 KVM 手動管理五倍的虛擬機花上不少時間,評估之後我們就調整成 ProxmoxVE 來管理,至少在大多數的情況有 GUI 是很方便的。

不過使用的權限還是限制在有權限管理機器的人身上,最近剛好有不少新同事加入,想讓他們練習部署伺服器。

所以就有了這樣的問題:

可以讓同事自己申請虛擬機來練習嗎?

用 Redux 跟 GraphQL 玩 Rails 5.1

上週五在處理網址續費的時候,發現幫老爸公司管理的網址已經多到一個程度。所以就決定把手邊可以轉移的服務都往 Gandi 丟過去。畢竟粗略估算可以達到 Grid B 的費率(實際上只有九五折)不過考量到有 API 能夠管理,以及一些自動化的手段,雖然相對還是稍微貴了一點,但是省去後續不少麻煩確實是有利的。

也因為這樣,就打算以串 Gandi 的 API 來練手一下,原本是想做完管理 Domain 的部分,不過沒想到在實作一些技術面上的東西花了不少時間,只做完簡單的價格查詢。

Rails Girls 4 活動感想

好久沒寫部落格了,一些技術類的文章都沒時間寫,草稿也越積越多⋯⋯
不過參加活動的不馬上寫完,很快就會忘記在做什麼事情啊 XDD

這次 RG4 超幸運被選為教練,然後我又長知識了~

雖然自己是讀設計學院,但是不管怎樣都不會有同學會朋友這麼認真的學這方面的知識。
其實某種意義上還蠻孤單的,不過對其他人來說畢竟不是必要的,所以也不能抱怨啊 XD

那麼,就來說說 8/29 跟 8/30 這兩天做了什麼吧!

Capistrano to Vagrant 自動部署心得

之前寫過一篇關於 Vagrant + Capistrano + GitLab 的自動化部署介紹。

不過當時因為一些問題,卡著沒有繼續完成測試。
最近因為某些原因,需要一個 Nightly-like (不一定會每日更新,取決于 commit) 的環境,所以只好硬著頭皮把全部的問題解決了⋯⋯

從學生的角度給學生學習程式的建議

雖然自己不是什麼高手,也沒什麼有建設性的建議,但是最近老爸公司來了實習生,我在跟實習生的互動過程中,發現了一些學生在學習程式上的一些要注意的部分,所以想來分享一下。

(先不討論我怎麼會在老爸公司寫扣,還有實習生怎麼出現的這些神秘問題了 XD)


其實已經有很多前輩已經分享過非常多有用的技巧與方法,這邊就單純以我個人的經驗,還有與實習生接觸後,我在教導實習生使用 Rails 和融入老爸公司開發流程的過程。(雖然以前只有我自己寫扣拉,哭哭)

用 Vagrant 整合 GitLab 與 Capistrano 做 Staging 環境自動部署

這標題超級長的說(崩潰

最近因為有實習生要來,所以把老爸公司設定好 GitLab 和 Gitlba-CI 來作為內部的版本本控制和自動化測試環境。
不過原本規劃的 Staging 環境也是在這檯主機上(當初就很淡定把記憶體和處理器加高,因為我會狂開 VM XD)但是會有 SSH 權限上的問題,原本想利用 Git 的 Hook 之類的來處理,但是感覺似乎不太好。

剛好這次看到 GitLab / GitLab-CI 的介紹文,我又再次嘗試安裝,過程上順利、簡單很多。
不過上次不順利肯定是我把整個環境裝在 NAS 裡面的關係 XDD

從我建好 GitLab / GitLab-CI 到設定 Capistrano 到自動部署,其實花費不少時間,而且有很多「差點忘記」的部分,因此決定來寫一篇文章做筆記!

Nitrous.io - 網站開發協作平台

會寫這篇文章,主要是最近收到 Nitrous.io 的信,而我意外地想到一個特別的用途,那就是透過線上協作功能教我妹寫 Ruby on Rails。

註:本文連結都帶有 Nitrous.io 的邀請碼,如果不喜歡請直接輸入 Nitrous.io 進入網站註冊


什麼是 Nitrous.io

這大概要追溯到三、四年前,一個叫做 Action.io 的服務了⋯⋯
那時還是高中生的我,意外的申請了一個叫做 Action.io 的 Beta 計劃,然後開始等待邀請碼。
(根據噗浪訊息,直到今年我才收到 Beta 邀請碼)

當時的 Action.io 展示了一個功能「線上協作」而引起我的興趣。

至於線上協作是什麼形式的呢?昨晚上測試的結果是只要啓動「協作模式」就能夠立即得看到其他人的編輯,並且附有聊天室的功能。
不過如果單純是這樣,那麼用最近幾年出現的線上編輯器不是也可以達到嗎?不過,既然有辦法推出這個服務,總是會有他的過人之處,那就是他直接提供了你一個接近 VPS 的環境。(推測是 Amazon EC2)