Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Thành Thạo Biến Môi Trường Trong Ruby: Hướng Dẫn Thực Tế

Một biến môi trường là một cặp khóa/giá trị, nó trông như sau:

KEY=VALUE

Chúng ta dùng các biến này để chia sẻ tùy chọn cấu hình giữa tất cả chương trình trong máy tính của bạn.

Đó là lý do tại sao quan trọng phải học cách chúng hoạt động & cách truy cập chúng từ chương trình Ruby của bạn dùng đối tượng đặc biệt ENV.

Ví dụ biến môi trường:

  • Cấu hình trình soạn thảo mặc định
  • Chỉ cho Ruby biết nơi tìm gem (GEM_PATH / GEM_HOME)
  • Truyền API key vào ứng dụng, không cần commit vào source control (git)
  • Định nghĩa nơi hệ điều hành tìm tệp nhị phân (.exe trong Windows)
  • Làm Rails khởi động ở chế độ test/development/production

Bạn có thể tìm danh sách TẤT CẢ biến môi trường của bạn với lệnh env trong Linux/Mac & lệnh set trong Windows.

Ví dụ:

PWD=/home/jesus
SHELL=/usr/bin/zsh
RUBY_ENGINE=ruby
RUBY_VERSION=2.6.0
GEM_ROOT=/opt/rubies/ruby-2.6.0/lib/ruby/gems/2.6.0
# ...

Danh sách có thể khá dài, nhưng bạn không cần ghi nhớ.

Bạn cũng có thể in tất cả biến và cấu hình đặc thù gem với lệnh gem env.

Bây giờ:

Nếu bạn muốn truy cập các biến môi trường này từ Ruby có một đối tượng đặc biệt bạn có thể dùng.

Hãy khám phá nó hoạt động như thế nào!

Sử Dụng Biến Môi Trường Trong Ruby

Ruby có đối tượng ENV này hoạt động như một hash & cho bạn truy cập tất cả biến môi trường có sẵn cho bạn.

Dưới đây là một số ví dụ…

Bạn có thể biết bạn có bao nhiêu khóa:

ENV.size # 48

Lấy danh sách chúng:

ENV.keys

Và truy cập khóa cụ thể:

ENV["GEM_HOME"] # "/home/jesus/.gem/ruby/2.6.0"

Bạn thậm chí có thể dùng các phương thức như map & select:

ENV.select { |k,v| k.size < 4 }

Nhưng bạn thiết lập các biến môi trường này bên ngoài Ruby như thế nào?

Cách Thiết Lập Biến Môi Trường

Bạn có thể thiết lập biến môi trường cho một lần sử dụng.

Như sau:

API_KEY=1 ruby -e 'p ENV["API_KEY"]'

Dùng điều này trong terminal, bên ngoài irb, thì Ruby sẽ có quyền truy cập giá trị API_KEY này.

Điều này hữu ích cho API key, nhưng cũng để đặt chế độ Rails.

Ví dụ:

RAILS_ENV=production rails console

Nhớ:

Điều này thiết lập biến môi trường cụ thể này cho tiến trình bạn đang khởi chạy ngay bây giờ.

Có nghĩa là nếu tôi làm API_KEY=1 …

Nó chỉ hoạt động cho lệnh đó!

Nếu bạn muốn biến này được dùng bởi tất cả lệnh khác bạn khởi chạy từ phiên terminal hiện tại.

Làm thế này:

export API_KEY=1

Bây giờ nếu bạn làm:

ruby -e 'p ENV["API_KEY"]'

Bạn sẽ nhận được 1, ngay cả khi không có biến tiền tố.

Cảnh báo:

Đừng dùng ENV cho cấu hình bên trong ứng dụng Ruby của bạn, đó KHÔNG phải mục đích của nó. ENV chỉ để đọc cấu hình bên ngoài đến từ bên ngoài Ruby.

Thử gem như dry-configurable cho tùy chọn cấu hình nội bộ.

Thuộc Tính Quan Trọng Của Biến Môi Trường

Bạn có thể thấy các thuộc tính này hữu ích vì chúng giải thích (có thể hành vi bất ngờ).

  • Snapshotting, biến môi trường được thiết lập khi bạn khởi chạy chương trình & không bị ảnh hưởng bởi thay đổi bên ngoài
  • Môi trường đóng, thay đổi biến bên trong một tiến trình (chương trình Ruby của bạn là một tiến trình) không thay đổi biến môi trường bên ngoài tiến trình
  • Biến môi trường không vĩnh viễn, khi bạn khởi động lại máy tính, hoặc thậm chí khi bạn đóng terminal, thay đổi biến môi trường bị mất (dù bạn dùng export Linux + Mac / set trong Windows)

Hãy ghi nhớ những điều này!

Rails Credentials

Rails 5.2 giới thiệu hệ thống mới giúp bạn quản lý API key.

Nó hoạt động bằng cách lưu credentials trực tiếp vào config/credentials.yml.enc, đây là tệp mã hóa bạn chỉ có thể đọc nếu có tệp master.key.

Ý tưởng là bạn chỉ commit credentials.yml.enc & giữ khóa riêng tư.

Làm sao thêm credentials mới?

Vâng, bạn không thể chỉnh sửa tệp .enc trực tiếp.

Dùng lệnh này thay vào đó:

bin/rails credentials:edit

Đây là tệp YAML, hãy chắc chắn định dạng đúng.

Bây giờ:

Bạn có thể đọc credentials từ ứng dụng Rails của bạn như sau…

Rails.application.credentials.github_api_key

Xem Video Hướng Dẫn

Tóm Tắt

Bạn đã học về biến môi trường, công cụ hữu ích cho phép bạn quản lý cấu hình hệ điều hành & giữ API key riêng tư.

Thành Thạo Biến Môi Trường Trong Ruby: Hướng Dẫn Thực Tế

Vui lòng chia sẻ bài viết này với bạn bè của bạn để nhiều người hơn có thể tìm thấy nó 🙂

Cảm ơn bạn đã đọc!