Câu trả lời:
Theo các tài liệu , #Rails.env
kết thúc tốt đẹp RAILS_ENV
:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Nhưng, hãy xem cụ thể cách nó được bọc, sử dụng ActiveSupport::StringInquirer
:
Gói một chuỗi trong lớp này cung cấp cho bạn một cách đẹp hơn để kiểm tra sự bằng nhau. Giá trị được trả về bởi Rails.env được gói trong một đối tượng StringInquirer vì vậy thay vì gọi đây:
Rails.env == "production"
bạn có thể gọi đây:
Rails.env.production?
Vì vậy, chúng không chính xác tương đương, nhưng chúng khá gần nhau. Tôi chưa sử dụng Rails nhiều, nhưng tôi nói #Rails.env
chắc chắn là tùy chọn hấp dẫn trực quan hơn do sử dụng StringInquirer
.
Rails.env
là tiêu chuẩn mới RAILS_ENV
đang bị phản đối.
Trước Rails 2.x cách ưa thích để có được môi trường hiện tại là sử dụng RAILS_ENV
hằng số. Tương tự như vậy, bạn có thể sử dụng RAILS_DEFAULT_LOGGER
để lấy logger hiện tại hoặc RAILS_ROOT
để có được đường dẫn đến thư mục gốc.
Bắt đầu từ Rails 2.x, Rails giới thiệu Rails
mô-đun với một số phương pháp đặc biệt:
Đây không chỉ là một sự thay đổi mỹ phẩm. Mô-đun Rails cung cấp các khả năng không khả dụng bằng các hằng số tiêu chuẩn như StringInquirer
hỗ trợ. Cũng có một số khác biệt nhỏ. Rails.root
không trả về String
một Path
ví dụ đơn giản .
Dù sao, cách ưa thích là sử dụng Rails
mô-đun. Các hằng số không được dùng trong Rails 3 và sẽ bị xóa trong bản phát hành trong tương lai, có lẽ là Rails 3.1.
Rails.env
hoạt động mà không có vấn đề gì
Cập nhật: trong Rails 3.0.9: phương thức env được xác định trong đường ray / lib / rails.rb