[Rails] 如何安裝 figaro ?

在 Rails 實做一個密鑰管理,簡單的不真實
使用 figaro 能一個指令就將機密信息同步到 heroku 上
如此一來密鑰也不會外洩。

步驟一,安裝Gem

建議開一個 branch 實做完,再 rebase 到 master
新開 branch 並切換到該branch :git checkout -b aws
編輯 Gemfile

Gemfile
1
gem 'figaro'

執行掛載 :bundle install

步驟二,執行 figaro

  1. 這行指令會自動生成 config/application.yml 文件,並自動添加到 .gitignore 檔案裡。
    figaro install
  2. 再次檢查是否意外入追蹤。

步驟三,讓他人好上手開發,協作

那怎麼讓他人也可以複製開源碼,且知道需要哪些設定密鑰?
就是丟一套模版在 application.yml.example 檔案裡

複製檔案:cp config/application.yml config/application.yml.example

application.yml.example
1
2
3
4
5
6
7
8
9
10
11
# Add configuration values here, as shown below.
#
# pusher_app_id: "2954"
# pusher_key: 7381a978f7dd7f9a1117
# pusher_secret: abdc3b896a0ffb85d373
# stripe_api_key: sk_test_2J0l093xOyW72XUYJHE4Dv2r
# stripe_publishable_key: pk_test_ro9jV5SNwGb1yYlQfzG17LHK
#
# production:
# stripe_api_key: sk_live_EeHnL644i6zo4Iyq4v1KdV9H
# stripe_publishable_key: pk_live_9lcthxpSIHbGwmdO941O1XVU

執行完,你已經有兩個檔案,一個是application.ymlapplication.yml.example
會將密鑰設定在 application.yml
上傳上去的會是 application.yml.example

步驟四,一鍵同步heroku

figaro heroku:set -e production

步驟五,同步要開源的 application.yml.example

假設你設定了 SEND_CLOUD的密鑰
同步過去 application.yml.example 但是把所有資訊改成 XXXX
如以下:

application.yml.example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Add configuration values here, as shown below.
#
# pusher_app_id: "2954"
# pusher_key: 7381a978f7dd7f9a1117
# pusher_secret: abdc3b896a0ffb85d373
# stripe_api_key: sk_test_2J0l093xOyW72XUYJHE4Dv2r
# stripe_publishable_key: pk_test_ro9jV5SNwGb1yYlQfzG17LHK
#
# production:
# stripe_api_key: sk_live_EeHnL644i6zo4Iyq4v1KdV9H
# stripe_publishable_key: pk_live_9lcthxpSIHbGwmdO941O1XVU

production:
SEND_CLOUD_USER_NAME: "XXXX" # 你的 API_USER
SEND_CLOUD_USER_KEY: "XXXX" # 你的 API_KEY

development:
SEND_CLOUD_USER_NAME: "XXXX" # 你的 API_USER
SEND_CLOUD_USER_KEY: "XXXX" # 你的 API_KEY

步驟六,資訊安全很重要!所以講三遍

application.yml 記得加到 .gitignor
一定要檢查!免得上傳到雲端,讓有心人士可趁
一定要檢查!免得上傳到雲端,讓有心人士可趁
一定要檢查!免得上傳到雲端,讓有心人士可趁

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×