Как узнать, что рельсы в производстве?


86

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

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

Означает ли это, что он не запускался в производственном режиме?

Спасибо за вашу помощь.

Ответы:


34

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.
Besi

5
Обратите внимание, что RAILS_ENVэто не рекомендуется. Rails.envВместо этого используйте .
Soullivaneuh 01

238

Если его Rails 3.1+, Rails.env.production?он вернется trueв производство.

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

2
>> Rails.envvia rails cотображается для любого режима.
obfk

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

Все, что отмечено знаком вопроса, доступно. Rails.env- это строка, украшенная ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Себастьян фон Меер,

Как примечание, это также работает в консоли rails. На рабочем сервере мне удалось запустить: консоль 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

В этом примере был Webrick, но некоторые люди не понимали, как при смене серверов просто заменяется имя. Обновлено для ясности.


8
Никто вменяемый не использует WEBrickв продакшене.
Хаулет

Хаулет абсолютно прав. Это просто для проверки того, в какой среде вы находитесь во время разработки.
bkunzi01

Если это троллинг, то это мастерство! Поздравляю!
JD.

-2

альтернатива командной строки

$ echo $ RAILS_ENV


Это не сработает, если сервер был запущен со встроенной переменной ENV. Тем не менее, если это было сделано, то где-то на диске должен находиться сценарий / псевдоним / и т.д., который будет включать переменную RAILS_ENV. Его можно найти на диске, например с помощьюack
New Alexandria

это не работает .... что находится в переменной и как она получает окружение ???
zee
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.