Fumitsuki's Magic Box

Keep calm and eat eight plates.

[Rails學習筆記] 用Settingslogic把重要資訊藏起來!

Ruby & Rails

1 557d8eccacb4460443c77632b6eee0403a28ad29fd37163ddd056b76ee81517b

首先來碎碎念一下XD
最近花了好多時間在寫自己的blog,
其實一直很想把它推到Github上(為了綠綠的attribute!!),
但是又怕後台路徑跟帳號密碼會被看光光,其實煩惱了一陣子XD

經過大師提點(?)之後才知道原來這是可以解決的呢XD
要解決這個問題有兩種方法,
一種是把設定值放在ENV,
另一種則是用settinglogic來解決這個問題。
這邊會提到的是後者~

(正文要開始了w)

安裝gem

首先呢,先在 Gemfile 中加入:

gem  "settingslogic"

然後在terminal執行 $ bundle 就安裝完成了。

使用Settinglogic

這個gem的詳細說明可以看github上的README
那這邊就簡單介紹初步的使用~

app/model 中加入 settings.rb
裡面加入以下的內容:

class Settings < Settingslogic
  source "#{Rails.root}/config/application.yml"
  namespace Rails.env
end

那code中的 application.yml 就是等一下要放後台路徑跟帳密的地方~

接著務必記得把 application.yml 加到 .gitignore 中,
否則所有努力都是白費的噢~~~

$ echo "config/application.yml" >> .gitignore

後台路徑

上次在文章 善用namespace建立後台 中有提到後台路徑的作法,
這邊要更進階的把後台路徑藏起來~

打開 config/route.rb ,原本的後台路徑應該是:

 namespace :admin do
  # ...
end

這邊要把它改成:

 namespace :admin, path: Settings.admin_path_prefix do
  # ...
end

這裡的 'adminpathprefix到時候會放在 **application.yml** 存後台路徑。
(可以自己取,要叫
backend_path` 什麼的隨意~)
所以接著就在 config/ 中加入 application.yml,裡面加上:

defaults: &defaults
development:
  <<: *defaults
  admin_path_prefix: your_admin_path
test:
  <<: *defaults
  admin_path_prefix: your_admin_path
production:
  <<: *defaults
  admin_path_prefix: your_admin_path

這裡的 your_admin_path 就是後台路徑~
可以根據不同的環境自訂後台~
如果 $ rails s 的時候會出錯,建議檢查一下有沒有多打少打什麼,還有縮排正不正確。

http basic authetication

常常用 http basic authetication 都是在 controller 中加入:

http_basic_authenticate_with name: "my_name", password: "my_secret"

如果這行跟著 controller 一起被推上github repo的話,肯定會被黑黑攻陷的!(誤)
所以也要想辦法放到 application.yml 中。
所以先把現在這行改成:

http_basic_authenticate_with  Settings.http_basic_auth.to_h

這裡的 http_basic_auth 就是會在 application.yml 中加入的帳密,
.to_h 會把 http_basic_auth 轉成雜湊。

接著呢,在 application.yml加入http_basic_auth

defaults: &defaults
development:
 <<: *defaults
 admin_path_prefix: your_admin_path
 http_basic_auth:
    :name: your_name 
    :password: Your_password
test:
 <<: *defaults
production:
 <<: *defaults
admin_path_prefix: your_admin_path
 http_basic_auth:
    :name: your_name 
    :password: Your_password

這樣就大功告成了!接著只要開啟server確定有好好運作就OK了~
照理來說後台路徑會變成 your_admin_path/your_controller_name 噢~

到這裡告一段落~ 趕快來試試看吧!

hide, route, authenticate, settinglogics

Comments

There are no comments.

Create a comment: