iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
1
自我挑戰組

關於 Ruby on Rails 的那些事系列 第 28

Day 28 - 重要的鑰匙要藏好

越接近完賽越害怕自己今天到底發文了沒!這幾天早中晚都會反覆確認有沒有發文,畢竟堅持30天寫技術文章那麼久,不得不擔心功虧一簣呢 XD

今天要介紹的是很方便和常用的套件。學寫程式之後才知道有很多眉角,比方說用 Git 做版本控制,然後推上 GitHub ,除了基本的版控,團體協作也很方便。但是專案中總是會有比較機密敏感的資訊,尤其是使用者名稱和密碼、金鑰等,如果是自己在本地操作就算了,一旦推上 GitHub,很快就會被掃描到,被有心人士竊取又更麻煩了。為了安全性的問題,所以才有了 Figaro 套件。利用 gitignore,把敏感資料存成環境變數,整理成一個檔案,讓 Git 忽略這個檔案,不加入版控之中,而環境變數可以在專案全域中取用,達到保護機密資訊的作用。

Figaro 在應用程序中解析一個忽略 Git 的 yaml 文件,並將其值加載到中ENV。

起手式,安裝套件

先到 RubyGem 尋找 figaro,然後回到專案 Gemfile 加入:

# Gemfile

gem 'figaro', '~> 1.2'

也別忘記:

$ bundle install

接著下這個指令會在 config 資料夾中長出一個檔案application.yml,並且加入到.gitignore

$ bundle exec figaro install

把重要資訊放進application.yml

先打開剛剛產生的檔案,有給一些範例:

小提醒:ENV 是的儲存方式是一個簡單的 key / value。所有值都將轉換為字串。深度巢狀的配置結構是不可能的。

特定環境

本地配置的數據會根據 Rails 的環境去改變。也就是可以設定不同環境下,給予不同的設定:

pusher_app_id: "2954"
pusher_key: "7381a978f7dd7f9a1117"
pusher_secret: "abdc3b896a0ffb85d373"

test:
  pusher_app_id: "5112"
  pusher_key: "ad69caf9a44dcac1fb28"
  pusher_secret: "83ca7aa160fedaf3b350"
  
development:
  pusher_app_id: "1234"
  pusher_key: "ad69cbe8b33dcac1fc89"
  pusher_secret: "94cd8bb160fedaf3b461"
  
 production:
  pusher_app_id: "9999"
  pusher_key: "cd69aef9a26dcac1fb34"
  pusher_secret: "98ca7aa173fedaf3b664"

補充:yaml wiki

當需要使用時

在程式碼中輸入 ENV[...],即可得到在設定檔案中配置好的密碼

ENV["pusher_secret"]

這是我最近參與的專案:

把帳戶、密碼、連結等存在這裡,用法很簡單,卻提升很多安全性問題喔!

今天的一切,都是為了明天的一小部分!

參考資料:
使用figaro管理密鑰
使用 Carrierwave 與 Figaro套件,在Heroku 部署 Rails 專案結合 AWS S3 存放上傳圖片

學無止盡,每天都要進步一點點!


上一篇
Day 27 - 上傳檔案 Carrierwave - 多個檔案
下一篇
Day 29 - 使用 AWS S3 服務
系列文
關於 Ruby on Rails 的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1

好熟悉的專案截圖XD

Mei iT邦新手 5 級 ‧ 2020-10-14 17:36:38 檢舉

引用自 PMaster 優秀團隊的畫面

我要留言

立即登入留言