Определите, работает ли rails под веб-сервером - PullRequest
5 голосов
/ 23 июля 2010

Как мне узнать, работает ли rails под веб-сервером, в отличие от скрипта или irb?

Для контекста: я отслеживаю объект ActiveRecord и хочу отправлять уведомления по электронной почте, если объекты изменяются, , но только , если изменения произошли через веб-интерфейс.

Ответы [ 3 ]

4 голосов
/ 03 августа 2012

У меня есть задача, чтобы мое приложение выполнило несколько проверок запуска перед запуском в качестве сервера. В моем конкретном случае я хочу убедиться, что в базе данных существует специальная запись User, так как вызовы API, сделанные для моего приложения, требуют этого User.

Я использую следующий хак в одном из инициализаторов, отвечающих за проверки запуска:

if defined? Rails::Server
  puts "Running as a server..."
  # Perform checks here...
end
0 голосов
/ 23 июля 2010

Я нашел что-то, что работает, хотя это не очень красиво

$0  # => "irb" (for script/console) 
    # => "/some/handler.fcgi" (for webserver)
    # => "/some/script.rb" (for a script)
0 голосов
/ 23 июля 2010

Возможно, я упускаю что-то очевидное, но разве не факт, что если доступ к вашей модели происходит через интерфейс контроллера (т.е. какое-то действие), то, по определению, доступ через веб-интерфейс?

Railsне работает под IRB.Да, вы можете получить доступ к объектам и состоянию в console, но это не доступ к веб-серверу.

Я думаю, вам просто нужно настроить некоторые фильтры в ваших контроллерах, чтобы реализовать логику отслеживания для интересующих моделейи тогда вы сможете различить общий доступ и доступ к веб-серверу (который инициируется контроллером).

Имеет смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...