Як визначити, чи виробляються рейки?


86

Раніше я script/server -e productionзапускав рейки у виробничому режимі. Це сталося, і я не отримав помилок. Однак як я можу зрозуміти, чи перебуває він у виробничому режимі? Я спробував неіснуючий маршрут, і я отримав подібну сторінку помилок, яку робив у розробці.

Я думав, що якщо під виробничою моделлю, я отримаю сторінку помилок 404, яка знаходиться в моїй / загальній папці.

Це означає, що він не запускався у виробничому режимі?

Спасибі за вашу допомогу.

Відповіді:


35

2 простих способи:

tail -f log/production.log

якщо є записи, що заповнюють цей журнал після того, як ви натиснули програму, ви перебуваєте у виробничому режимі.

другий спосіб:

в одному з ваших поглядів (мабуть, макет хороший), просто додайте

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

І це покаже вам, в якому середовищі ви працюєте.

редагувати

Ви побачите сторінку винятків за замовчуванням замість фактичних сторінок помилок у будь-якому середовищі, якщо запит вважається "локальним" (тобто з localhost або 127.0.0.1), ви можете замінити це, додавши це до свого ApplicationController

def local_request?
  false
end

Ви можете знайти цей метод у документах api


Я не можу отримати другий спосіб роботи, але в моєму production.log є записи, в яких сказано, що я створив завдання в X раз. То чому я не отримую правильну сторінку помилок 404? Чи потрібно десь вказувати, щоб надати правильну сторінку помилки? Дякую за допомогу.
sent-hil

Я отримав помилку, на мій погляд, і натомість мені довелося застосувати підхід @ Krishnaprasad.
Бесі,

5
Зверніть увагу RAILS_ENV, що застаріла. Використовуйте Rails.envзамість цього.
Soullivaneuh

238

Якщо його Rails 3.1+, Rails.env.production?повернеться trueпід час виробництва.

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

2
>> Rails.envrails cвідображається екран via для будь-якого режиму.
obfk

6
Rails.env.development?також доступний.
hlcs

Доступне все зі знаком питання. Rails.envце рядок, прикрашений ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Sebastian vom Meer

Як примітка, це також працює в консолі рейок. На робочому сервері я зміг запустити: консоль rails, а потім команду вище.
Райан

28

Для сучасних версій Rails (3+) Rails.envповертає середовище як String:

Rails.env #=> "production"

Для кожного середовища також є корисні засоби доступу, які повернуть Boolean:

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


3

Мені стало набагато простіше просто перезапустити сервер rails і прочитати другий рядок у командному рядку:

Запущені rails s -e productionрезультати:

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

Якби в цьому прикладі був Вебрік, але деякі люди не розуміли, як зміна серверів просто замінить ім'я. Оновлено для ясності.


8
Ніхто розумний не використовує WEBrickу виробництві.
Hauleth

Хаулет абсолютно правильний. Це просто для перевірки того, в якому середовищі ви перебуваєте під час розробки.
bkunzi01

Якщо ця відповідь тролінг, це майстерність! Вітаємо!
JD.

-2

альтернатива командного рядка -

$ echo $ RAILS_ENV


Це не буде працювати, якщо сервер запускався з вбудованою змінною ENV. Тим не менш, якщо це було зроблено, тоді скрипт / псевдонім / і т.д. повинен жити десь на диску, який включатиме RAILS_ENV var. Можна шукати його на диску, наприклад, зack
Нова Олександрія

це не працює .... що в змінній і як вона отримує середовище ???
zee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.