Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: Ruby

Ruby 語法一些不太喜歡的地方

Posted on 2019 年 2 月 18 日2021 年 3 月 12 日 By 日落 在〈Ruby 語法一些不太喜歡的地方〉中尚無留言

最近學 Ruby 看到一些特性,讓我覺得有點毛毛的,像是 Ruby 的 function call syntax:

list = [0, 1, 2, 3, 4]

list.count()

# 寫可以這樣寫
list.count

count() 還算好,如果是 fetch() 就有趣了:

list.fetch(3)  # 3

# 刮號可以省略
list.fetch 3  # 3

不否認這種特性可以工程師提高開發效率,算是 syntax sugar 吧?但是若沒有一致的 coding srandard,可能會讓整個專案的程式碼變的雜亂不容易閱讀,這樣就變成「syntax salt」了。

list = [1, 2, 3]

# 這個應該沒什麼問題
list.fetch(1) + 5  # 7

# 這個就很容易誤會了
list.fetch 1 + 5  # IndexError

感謝 @david50407 提供 Ruby Style Guide!

Tags:Ruby

Redmine booting up with Thin

Posted on 2016 年 7 月 16 日2021 年 3 月 12 日 By 日落 在〈Redmine booting up with Thin〉中尚無留言

以前在 FreeBSD 上找不到什麼比較好的 Redmine 啟動方法,當時找到最好的解法是在 Nginx 上面安裝 Passenger 將 Request 轉給 Redmine 執行。

但 passenger 需要在 compile time 手動將 module 編譯進去,若遇到 Nginx 版本更新,還要在手動為了 passenger 設定一次,實在很麻煩。

後來終於找到比較簡單的方法,就是在 Redmine 的 GemFile 加上「Thin」:

gem "rails", "4.2.5.2"
gem "jquery-rails", "~> 3.1.4"
gem "coderay", "~> 1.1.0"
gem "builder", ">= 3.0.4"
....
gem "roadie-rails"
gem "thin"

之後 bundler 安裝時就會自動把對應的 thin 版本拉下來。再來執行「thin config -C config.yml」便會建立一個預設的設定檔:

---
chdir: /home/zeroplex/redmine
environment: development
address: 0.0.0.0
port: 3000
timeout: 30
log: /home/zeroplex/redmine/log/thin.log
pid: tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 100
require: []
wait: 30
threadpool_size: 20
daemonize: true

將設定檔的「chdir」設定成 Remine 跟目錄,再來執行「thin start -C config.yml」就能把 Redmine 跑起來了。

若機器上只有 thin 在跑 web server,那就讓他處理外部連線就好。若原本就有其他 web server 像是 Nginx 之類的,可以參考官網說明,設定 proxy 在 web server 把 request 轉給 thin。

Tags:Redmine, Ruby

Install Gems without Docs

Posted on 2015 年 3 月 30 日2021 年 3 月 12 日 By 日落 在〈Install Gems without Docs〉中尚無留言

使用 gems install 時,預設會下載並產生 gem 說明文件,但這個步驟會花掉不少時間。

若環境為 production,說明文件其實是沒有必要安裝的,可以在家目錄下新增 .gemrc 檔,要求安裝 gems 時忽略說明文件:

cd ~
echo 'gem: --no-rdoc --no-ri' > .gemrc
Tags:Note, Ruby

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.