Run System Commands From Rails

Làm cách nào để gọi các lệnh shell từ bên trong chương trình Rails? Làm cách nào để lấy lại kết quả từ các lệnh này vào Ruby? Làm cách nào chúng ta có thể sử dụng các lệnh bên ngoài từ ruby. Bài viết này sẽ hướng dẫn các cách để thực thi các

Làm cách nào để gọi các lệnh shell từ bên trong chương trình Rails? Làm cách nào để lấy lại kết quả từ các lệnh này vào Ruby?
Làm cách nào chúng ta có thể sử dụng các lệnh bên ngoài từ ruby. Bài viết này sẽ hướng dẫn các cách để thực thi các lệnh (shell/ Linux Commands) nhé.

Sử dụng system method

Syntax: system("cmd")

Ex:

  • Hệ thống có thể trả về 3 giá trị có thể có:
  1. True nếu lệnh hoạt động
  2. False nếu lệnh trả về lỗi
  3. Nil nếu không tìm thấy lệnh

Kernel#` VÀ %X

NếU muốn nhận đầu ra từ lệnh bạn đang chạy thì có thể sử dụng phương thức %x hoặc Kernel#`.

Syntax:

`cmd`
%x( cmd )

Ex:

exec

Process hiện tại được thay thế và không bao giờ tiếp tục. Điều này có nghĩa là chương trình Rails của bạn sẽ kết thúc.

Syntax: exec "cmd"
Ex:

Fork + Exec

Sử dụng exec thì Process hiện tại sẽ được thay thế. Chúng ta không muốn điều này và có thể lấy được kết quả thì phải làm thế nào, với sự kệt hợp với Fork thì chúng ta đã có điều mình mong muốn.
Fork tạo một bản sao của process hiện tại của bạn (ứng dụng Ruby)

Lưu ý: Fork không sử dụng được trên windows nhé

Syntax:fork { exec("cmd") }

Ex:

Hy vọng với bài viết này mọi người có thể thao tác được với các system command. Hãy cẩn thận khi sử dụng những lệnh này vì đó là lệnh system sẽ có nguy cơ về security. Đầu vào cần phải validate.

Happy coding!!

references

https://stackoverflow.com/questions/2232/how-to-call-shell-commands-from-ruby

https://www.rubyguides.com/2018/12/ruby-system/

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ