---
# System prepended metadata

title: 20221124 Rails
tags: [Ruby & Rails]

---

###### 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
```