Bagaimana cara mengetahui apakah rel sedang dalam produksi?


86

Saya biasa script/server -e productionmemulai rel dalam mode produksi. Itu berhasil dan saya tidak mendapat kesalahan. Namun, bagaimana cara mengetahui apakah itu dalam mode produksi? Saya mencoba rute yang tidak ada, dan saya mendapat halaman kesalahan serupa yang saya lakukan dalam pengembangan.

Saya pikir jika dalam model produksi, saya mendapatkan halaman kesalahan 404 yang ada di folder saya / publik.

Apakah itu berarti itu tidak dimulai dalam mode produksi?

Terima kasih atas bantuan Anda.

Jawaban:


35

2 cara mudah:

tail -f log/production.log

jika ada entri yang mengisi log itu setelah Anda membuka aplikasi, Anda dalam mode produksi.

cara kedua:

di salah satu tampilan Anda (mungkin tata letaknya bagus), tambahkan saja

<%= "Environment: #{RAILS_ENV}" %>

Dan itu akan menunjukkan kepada Anda lingkungan tempat Anda berlari.

edit

Anda akan melihat halaman pengecualian default dan bukan halaman kesalahan sebenarnya di lingkungan mana pun jika permintaan dianggap "lokal" (yaitu dari localhost atau 127.0.0.1), Anda dapat menggantinya dengan menambahkan ini ke ApplicationController

def local_request?
  false
end

Anda dapat menemukan metode ini di dokumen di api


Saya tidak bisa mendapatkan cara kedua untuk bekerja, tetapi ada entri di production.log saya yang mengatakan saya membuat Tugas pada waktu X. Jadi mengapa saya tidak mendapatkan halaman kesalahan 404 yang benar? Apakah saya harus menentukan tempat untuk memberikan halaman kesalahan yang benar? Terima kasih untuk bantuannya.
dikirim-hil

Saya mendapat kesalahan dalam pandangan saya dan harus menggunakan pendekatan @ Krishnaprasad sebagai gantinya.
Besi

5
Harap dicatat RAILS_ENVsudah usang. Gunakan Rails.envsebagai gantinya.
Soullivaneuh

238

Jika Rails 3.1+ nya, Rails.env.production?akan kembali truesaat di produksi.

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  

2
>> Rails.envvia rails cmuncul untuk menampilkan mode apapun.
originalhat

6
Rails.env.development?juga tersedia.
hlcs

Semuanya dengan tanda tanya tersedia. Rails.envadalah String yang didekorasi dengan ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Sebastian vom Meer

Sekadar catatan, ini juga berfungsi di konsol rel. Pada server produksi saya dapat menjalankan: rails console, lalu perintah di atas.
Ryan

28

Untuk versi Rails modern (3+), Rails.envkembalikan lingkungan sebagai String:

Rails.env #=> "production"

Ada juga pengakses berguna untuk setiap lingkungan yang akan mengembalikan Boolean:

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  


3

Saya merasa jauh lebih mudah untuk memulai ulang server rel dan membaca baris kedua pada baris perintah:

Menjalankan rails s -e productionkeluaran:

=> Booting Puma
=> Rails 4.2.4 application starting in `production` on http://localhost:3000

Memiliki Webrick dalam contoh tetapi beberapa orang tidak mengerti bagaimana mengubah server hanya akan menggantikan namanya. Diperbarui untuk kejelasan.


8
Tidak ada orang waras yang menggunakannya WEBrickdalam produksi.
Hauleth

Hauleth benar sekali. Ini hanya untuk menguji lingkungan apa yang sedang Anda kembangkan.
bkunzi01

Jika jawaban ini menipu, itu penguasaan! Selamat!
JD.

-2

alternatif baris perintah

$ echo $ RAILS_ENV


Ini tidak akan berfungsi jika server dimulai dengan var ENV inline. Meskipun demikian, jika ini dilakukan maka skrip / alias / etc harus berada di suatu tempat di disk, yang akan menyertakan var RAILS_ENV. Seseorang dapat mencari disk untuk itu, seperti denganack
New Alexandria

ini tidak bekerja .... apa yang ada dalam variabel dan bagaimana mendapatkan lingkungan ???
z atef
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.