Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách sử dụng các biến môi trường trong Ruby

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ập
bin/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ư.

Cách sử dụng các biến môi trường trong Ruby

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!