Câu trả lời:
Theo các tài liệu , #Rails.envkế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.envchắc chắn là tùy chọn hấp dẫn trực quan hơn do sử dụng StringInquirer.
Rails.envlà 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_ENVhằ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 Railsmô-đ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ư StringInquirerhỗ trợ. Cũng có một số khác biệt nhỏ. Rails.rootkhông trả về Stringmột Pathví dụ đơn giản .
Dù sao, cách ưa thích là sử dụng Railsmô-đ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.envhoạ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