Biến môi trường là một cặp khóa / giá trị, có dạng như sau:
KEY=VALUE
Chúng tôi sử dụng các biến này để chia sẻ các tùy chọn cấu hình giữa tất cả các chương trình trong máy tính của bạn.
Đó là lý do tại sao điều quan trọng là phải tìm hiểu cách chúng hoạt động và cách truy cập chúng từ các chương trình Ruby của bạn bằng cách sử dụng ENV
biến đặc biệt.
Ví dụ về các biến môi trường :
- Định cấu hình trình chỉnh sửa mặc định của bạn
- Cho Ruby biết nơi tìm đá quý (
GEM_PATH
/GEM_HOME
) - Chuyển các khóa API vào ứng dụng của bạn mà không cần phải cam kết chúng với quyền kiểm soát nguồn (git)
- Xác định vị trí hệ điều hành của bạn sẽ tìm kiếm các tệp nhị phân (.exe trong Windows)
- Làm cho Rails bắt đầu ở chế độ thử nghiệm / phát triển / sản xuất
Bạn có thể tìm thấy danh sách TẤT CẢ các biến môi trường của mình bằng env
lệnh trong Linux / Mac và set
lệnh 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 phải ghi nhớ.
Bạn cũng có thể in tất cả các biến &cấu hình dành riêng cho đá quý bằng gem env
lệnh.
Bây giờ :
Nếu bạn muốn truy cập các biến môi trường này từ Ruby, bạn có thể sử dụng một đối tượng đặc biệt.
Hãy cùng khám phá cách hoạt động của nó!
Sử dụng các biến môi trường trong Ruby
Ruby có đối tượng ENV này hoạt động giống như một hàm băm và nó cung cấp cho bạn quyền truy cập vào tất cả các biến môi trường có sẵn cho bạn.
Đây là một số ví dụ…
Bạn có thể biết mình có bao nhiêu khóa :
ENV.size # 48
Nhận danh sách chúng :
ENV.keys
Và truy cập các khóa cụ thể :
ENV["GEM_HOME"] # "/home/jesus/.gem/ruby/2.6.0"
Bạn thậm chí có thể sử dụng các phương pháp như bản đồ &chọn:
ENV.select { |k,v| k.size < 4 }
Nhưng làm cách nào để bạn đặt các biến môi trường này bên ngoài Ruby?
Cách đặt các biến môi trường
Bạn có thể đặt một biến môi trường để sử dụng một lần.
Như thế này :
API_KEY=1 ruby -e 'p ENV["API_KEY"]'
Sử dụng điều này trong một thiết bị đầu cuối, bên ngoài irb, khi đó Ruby sẽ có quyền truy cập vào API_KEY
này giá trị.
Điều này hữu ích cho các khóa API, nhưng cũng để đặt chế độ Rails.
Ví dụ :
RAILS_ENV=production rails console
Hãy nhớ :
Điều này đặt biến môi trường cụ thể này cho quá trình này mà bạn đang khởi chạy ngay bây giờ.
Có nghĩa là nếu tôi làm API_KEY=1 <command>
...
Nó sẽ chỉ hoạt động cho lệnh đó!
Nếu bạn muốn biến này được sử dụng bởi tất cả các lệnh khác mà bạn khởi chạy từ phiên đầu cuối hiện tại của mình.
Làm điều này :
export API_KEY=1
Bây giờ nếu bạn làm như vậy :
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 :
Không sử dụng ENV
để cấu hình trong ứng dụng Ruby của bạn, đó KHÔNG phải là mục đích của nó. ENV chỉ để đọc cấu hình bên ngoài bên ngoài Ruby.
Hãy thử một viên ngọc quý như có thể định cấu hình khô cho các tùy chọn cấu hình nội bộ.
Các thuộc tính quan trọng của các biến môi trường
Bạn có thể thấy những thuộc tính này hữu ích vì chúng giải thích hành vi (có thể không mong muốn).
- Chụp nhanh , các biến môi trường được đặt khi bạn khởi chạy chương trình và không bị ảnh hưởng bởi các thay đổi bên ngoài
- Môi trường đóng , việc thay đổi các biến bên trong một quy trình (chương trình Ruby của bạn là một quy trình) không thay đổi các biến môi trường bên ngoài quy trình
- Các biến môi trường không phải là vĩnh viễn , khi bạn khởi động lại máy tính của mình hoặc ngay cả khi bạn đóng thiết bị đầu cuối của mình, các thay đổi đối với các biến môi trường sẽ bị mất (ngay cả khi bạn sử dụng
export
Linux + Mac /set
trong Windows)
Hãy ghi nhớ những điều này!
Thông tin đăng nhập của Rails
Rails 5.2 đã giới thiệu một hệ thống mới để giúp bạn quản lý các khóa API.
Nó hoạt động bằng cách lưu thông tin đăng nhập trực tiếp vào config/credentials.yml.enc
, đây là tệp được mã hóa mà bạn chỉ có thể đọc nếu có master.key
tệp.
Ý tưởng là bạn chỉ cam kết credentials.yml.enc
&bạn giữ khóa riêng tư.
Làm cách nào để bạn thêm thông tin đăng nhập mới?
Chà, bạn không thể chỉnh sửa .enc
nộp trực tiếp.
Sử dụng lệnh này thay thế :
Thông tin đăng nhậpbin/rails credentials:edit
Đây là tệp YAML, hãy đảm bảo định dạng đúng.
Bây giờ :
Bạn có thể đọc thông tin đăng nhập từ ứng dụng Rails của mình như thế này ...
Rails.application.credentials.github_api_key
Xem hướng dẫn bằng video
Tóm tắt
Bạn đã tìm hiểu về các biến môi trường, một công cụ hữu ích cho phép bạn quản lý cấu hình hệ điều hành và giữ các khóa API của bạn ở chế độ riêng tư.
Hãy chia sẻ bài viết này với bạn bè của bạn để nhiều người có thể tìm thấy nó 🙂
Cảm ơn vì đã đọc!