###### tags: `Ruby & Rails`
# 20221124 Rails
<政庭>
### 幕前處理 - 在前端一路做完訂單付款流程
### 幕後處理 - 非同步處理,先在前端產生付款訂單。但沒有馬上付錢。
### ngrok - 小工具 串接(第三方登入/金流),可以產生「暫時的網址」,讓別人可以POST資料過來(put localhost on the Internet)。適用在「幕後處理」。
### 可以使用設定環境變數的方式,來避免忘記更改ngrok產生的網址。
* 因為正式 push 到 server上,不會帶到本機的環境變數。
### dotenv 產生環境變數 將專案 push 到 dev 環境
### 工程師可以在 dev 環境測試 之後再到 staging環境測試
### staging 環境 與 production 環境 相似度99%
### 環境變數:可以放重要資訊資訊在裡面,不要再放在code裡面。
### 寫文章 為什麼使用環境變數
---
<侑庭>
### 幕前處理:信用卡 ->同步付款一步一步幕前(即時付款完成)
### 幕後處理:匯款-> 非同步 ,因為消費者不會立刻匯款所以當匯款完成後金流系統這邊查到帳,就會拋一包API(內涵 title , 商品名稱...等)給商家去接,然後等待商家確認知更改為已付款,但這中間消費者的畫面停在匯款頁面,府款之後才會做上面這一段
### ngork -小工具,暫時開一個通道起來,讓對方可以post資料過來,用在幕後處理, 可用於串接金流系統跟第三方登入
### 可以用環境變數來取代才不會忘記更改 ngork 產出的網址,每次都不同
### dotenv 產生環境變數,讓專案的網址如果改變都可以抓到改變
### 環境變數.env 因為環境不同所以可以帶入不同的環境變數如果我在上線時忘記改url 可以抓不同的env.dev or env.pud
### 正式的時候不會把env進版控,因為裡面會有路徑key,
---
<于婷>
## 金流處理方式
### 幕前
即時付款(信用卡)
### 幕後處理
非同步處理,沒有馬上付錢(匯款)
## ngork 套件
可以產生「暫時的網址」
## dotenv 套件
處理環境變數 或 機要資訊(金鑰)
## 處理兩個JS controller 溝通
參考這裡[fullstackheroes](https://fullstackheroes.com/tutorials/stimulus/create-custom-events/)
```ruby=
const event = new CustomEvent("update-map");
window.dispatchEvent(event);
```
```ruby=
data-action="update-map@window->map#updateHotspotLocation"
```
## 隨機產生12位數亂碼
```ruby=
before_validation :generate_serial
private
def generate_serial
self.serial = SecureRandom.alphanumeric(12)
end
```