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

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

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

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

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


person sent-hil    schedule 28.12.2009    source источник


Ответы (6)


2 простых способа:

tail -f log/production.log

Если после того, как вы открыли приложение, в этом журнале есть записи, вы находитесь в рабочем режиме.

второй способ:

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

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

И это покажет вам, в какой среде вы работаете.

изменить

Вы увидите страницу исключения по умолчанию вместо фактических страниц ошибок в любой среде, если запрос считается «локальным» (то есть от localhost или 127.0.0.1), вы можете переопределить это, добавив это в свой ApplicationController

def local_request?
  false
end

Вы можете найти этот метод в документации в api

person Dan McNevin    schedule 28.12.2009
comment
Я не могу найти второй способ работы, но в моем журнале production.log есть записи о том, что я создал задачу во время X. Так почему же я не получаю нужную страницу с ошибкой 404? Нужно ли мне где-то указывать, чтобы отображалась правильная страница с ошибкой? Спасибо за помощь. - person sent-hil; 28.12.2009
comment
На мой взгляд, я получил ошибку, и вместо этого мне пришлось использовать подход @ Krishnaprasad. - person Besi; 01.08.2013
comment
Обратите внимание: RAILS_ENV устарел. Вместо этого используйте Rails.env. - person Soullivaneuh; 01.04.2015

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

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  
person Krishna Prasad Varma    schedule 22.08.2011
comment
>> Rails.env через rails c отображается для любого режима. - person originalhat; 28.12.2012
comment
Все, что помечено знаком вопроса, доступно. Rails.env - это строка, украшенная ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html - person Sebastian vom Meer; 26.02.2015
comment
Как примечание, это также работает в консоли rails. На производственном сервере мне удалось запустить: консоль rails, затем команду выше. - person Ryan; 09.09.2016

Для современных версий Rails (3+) Rails.env возвращает среду как String:

Rails.env #=> "production"

Также есть полезные аксессоры для каждой среды, возвращающие Boolean:

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  
person Dogweather    schedule 31.08.2013

В командной строке введите rails console, затем Rails.env.

person Karolis Ramanauskas    schedule 06.09.2015

Мне было намного проще просто перезапустить сервер rails и прочитать вторую строку командной строки:

Выполняется rails s -e production выходов:

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

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

person bkunzi01    schedule 18.09.2014
comment
Никто в здравом уме не использует WEBrick в производстве. - person Hauleth; 18.09.2014
comment
Хаулет абсолютно прав. Это просто для проверки того, в какой среде вы находитесь во время разработки. - person bkunzi01; 23.09.2015
comment
Если это троллинг, то это мастерство! Поздравляю! - person JD.; 21.10.2016

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

$ echo $ RAILS_ENV

person vireshas    schedule 24.01.2012
comment
Это не сработает, если сервер был запущен со встроенной переменной ENV. Тем не менее, если это было сделано, то где-то на диске должен находиться сценарий / псевдоним / и т. Д., Который будет включать переменную RAILS_ENV. Его можно найти на диске, например, с помощью ack - person New Alexandria; 09.01.2013
comment
это не работает .... что находится в переменной и как она получает окружение ??? - person z atef; 25.11.2015