Во-первых, ошибка, которую вы получаете, заключается в том, что вы вызываете ApplicationController.is_admin?
, который не определен, потому что ваш метод определен в экземплярах ApplicationController
, а не в классе ApplicationController
.
Во-вторых, концепция session
(по крайней мере, для меня) на самом деле не имеет особого смысла в граблях. В командной строке нет никаких реальных сессий, кроме сессии вашего пользователя, что не соответствует вашим ожиданиям.
Честно говоря, я не знаю лучшего способа вызова действия / метода Controller из любого места вне классов, которые наследуются от ApplicationController
или ActionController::Base
, или почему вы этого захотите. Эти действия / методы специально предназначены для использования во время запроса, а не для каких-либо действий, которые вы вызываете каждый раз. Если вам действительно что-то нужно и вы не хотите переопределять это, поместите это в модель / библиотеку и включите это.