Jawaban:
Menurut dokumen , #Rails.env
membungkus RAILS_ENV
:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Tapi, lihat secara khusus bagaimana dibungkus, menggunakan ActiveSupport::StringInquirer
:
Membungkus string di kelas ini memberi Anda cara yang lebih cantik untuk menguji kesetaraan. Nilai yang dikembalikan oleh Rails.env dibungkus dengan objek StringInquirer jadi alih-alih memanggil ini:
Rails.env == "production"
Anda dapat memanggil ini:
Rails.env.production?
Jadi mereka tidak persis setara, tetapi mereka cukup dekat. Saya belum pernah menggunakan Rails, tapi saya katakan #Rails.env
tentu saja pilihan yang lebih menarik secara visual karena menggunakan StringInquirer
.
Rails.env
adalah standar baru RAILS_ENV
yang sedang ditinggalkan.
ENV['RAILS_ENV']
sekarang sudah ditinggalkan .
Anda harus menggunakan Rails.env
yang jelas jauh lebih baik.
Sebelum Rails 2.x cara yang disukai untuk mendapatkan lingkungan saat ini adalah menggunakan RAILS_ENV
konstanta. Demikian juga, Anda dapat menggunakan RAILS_DEFAULT_LOGGER
untuk mendapatkan logger saat ini atauRAILS_ROOT
untuk mendapatkan path ke folder root.
Mulai dari Rails 2.x, Rails memperkenalkan Rails
modul dengan beberapa metode khusus:
Ini bukan hanya perubahan kosmetik. Modul Rails menawarkan kemampuan yang tidak tersedia menggunakan konstanta standar seperti StringInquirer
dukungan. Ada juga sedikit perbedaan. Rails.root
tidak mengembalikan String
buth sederhanaPath
.
Bagaimanapun, cara yang disukai adalah menggunakan Rails
modul. Konstanta tidak digunakan lagi dalam Rails 3 dan akan dihapus dalam rilis mendatang, mungkin Rails 3.1.
Rails.env
bekerja tanpa masalah.
Pembaruan: dalam Rails 3.0.9: metode env didefinisikan dalam railties / lib / rails.rb