Вызов метода ApplicationController с консоли в Rails

В Rails, предположим, что файл уже загружен, как можно вызвать my_method из этого примера с консоли?

# some_file.rb
class MyClass < ApplicationController::Base
  def my_method(args)

Ответ 1

Другой, очень простой способ сделать это - использовать экземпляр ApplicationController.

ApplicationController < ActionController::Base
  def example
    "O HAI"
  end
end

Затем в консоли вы можете сделать следующее:

>> ApplicationController.new.example

В результате вы получите следующее:

O HAI

Это, конечно, имеет ограничение на отсутствие доступа ко всему нормальному запросу, например самому объекту request. Если вам это нужно, как предложил Патрик Клингеманн, вы можете использовать отладчик... Я лично рекомендую использовать Pry:

Скорее всего, это слишком поздно для вас, но, надеюсь, это поможет кому-то в будущем.

Ответ 2

использовать отладчик:

в Gemfile add:

gem 'debugger'

то из терминала:

> bundle
> rails s --debugger

в действии контроллера, которое вы нажимаете:

class WidgetsController < ApplicationController
  def index
    debugger
    @widgets = Widget.all
    respond_with @widgets
  end
end

затем укажите браузеру: http://localhost:3000/widgets, страница не завершит загрузку. Вернитесь к терминалу, на котором работает ваш сервер, и вы будете в интерактивном сеансе отладки, где вы можете запустить: my_method

Ответ 3

Это не совсем вопрос, но вы также можете отлаживать его с помощью pry gem, аналогично debugger.

Добавьте в Gemfile:

gem "pry"
gem "pry-remote"
gem "pry-stack_explorer"
gem "pry-debugger"

В вашем методе:

def myMethod
  binding.pry
  # some code
end

Готово!

Когда вы запустите свой метод, обработка страницы будет зависеть на binding.pry, и pry примет запрос. Введите n для каждого нового шага метода и поиграйте со своими переменными, которые могут быть напечатаны (просто набрав их) в режиме реального времени!