Ruby 學習心得 === ###### tags: `Ruby` 參考: [使用VScode调试Rails](https://www.codenong.com/f5236b145aec5055bfb3/) ```shell= gem install ruby-debug-ide gem install debase ``` # winget 安裝 ruby 參考: [How to install](https://winget.run/pkg/RubyInstallerTeam/Ruby.3.1) ```bash= winget install -e --id RubyInstallerTeam.Ruby.3.1 ``` # hello world ```ruby= puts "Hello World!" ``` # launch.json ``` { // 使用 IntelliSense 以得知可用的屬性。 // 暫留以檢視現有屬性的描述。 // 如需詳細資訊,請瀏覽: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Debug Local File", "type": "Ruby", "request": "launch", "program": "${workspaceRoot}/main.rb" } ] } ``` # 錯誤處理 ## RSA 加密範例 ```ruby= require "openssl" require "openssl/oaep" require "base64" require "json" key = OpenSSL::PKey::RSA.new(File.read("public.pem")) payload = { "ts": 1641785544, "secureToken": "17919e3e7892d22872ffdaaeac46b138d0f6131e8bc5593aabaa7d89babcab30", "action": 2, "belongsDC": "FATCAT", "username": "api_tester", "uid": "DFAT1588073831095e", "type": "deposit", "amount": 10.0, }.to_json label = "" md = OpenSSL::Digest::SHA1 jsonStringLength = payload.length partitionLength = 100 startIndex = 0 endIndex = partitionLength buf = "" loop do if endIndex > jsonStringLength endIndex = jsonStringLength end t = payload[startIndex..endIndex - 1] cipher_buffer = key.public_encrypt_oaep(t, label, md) buf += cipher_buffer if endIndex >= jsonStringLength break end startIndex += partitionLength endIndex += partitionLength end x = Base64.encode64(buf) puts x ``` ```shell= Uncaught exception: cannot load such file -- openssl/oaep ``` 有套件沒安裝,下面是安裝指令: ```shell= gem install openss gem install openssl gem install openssl-oaep gem install base64 gem install json ``` ## 參考資料 [ruby 台灣官網](https://www.ruby-lang.org/zh_tw/) [uby初学者教程第2讲:安装Ruby](https://www.youtube.com/watch?v=f7s1df48DJo&t=93s)