Jawaban:
Menurut dokumen , #Rails.envmembungkus 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.envtentu saja pilihan yang lebih menarik secara visual karena menggunakan StringInquirer.
Rails.envadalah standar baru RAILS_ENVyang sedang ditinggalkan.
ENV['RAILS_ENV']sekarang sudah ditinggalkan .
Anda harus menggunakan Rails.envyang jelas jauh lebih baik.
Sebelum Rails 2.x cara yang disukai untuk mendapatkan lingkungan saat ini adalah menggunakan RAILS_ENVkonstanta. Demikian juga, Anda dapat menggunakan RAILS_DEFAULT_LOGGERuntuk mendapatkan logger saat ini atauRAILS_ROOT untuk mendapatkan path ke folder root.
Mulai dari Rails 2.x, Rails memperkenalkan Railsmodul dengan beberapa metode khusus:
Ini bukan hanya perubahan kosmetik. Modul Rails menawarkan kemampuan yang tidak tersedia menggunakan konstanta standar seperti StringInquirerdukungan. Ada juga sedikit perbedaan. Rails.roottidak mengembalikan Stringbuth sederhanaPath .
Bagaimanapun, cara yang disukai adalah menggunakan Railsmodul. Konstanta tidak digunakan lagi dalam Rails 3 dan akan dihapus dalam rilis mendatang, mungkin Rails 3.1.
Rails.envbekerja tanpa masalah.
Pembaruan: dalam Rails 3.0.9: metode env didefinisikan dalam railties / lib / rails.rb