В Rails, предположим, что файл уже загружен, как можно вызвать my_method
из этого примера с консоли?
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
В Rails, предположим, что файл уже загружен, как можно вызвать my_method
из этого примера с консоли?
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
Другой, очень простой способ сделать это - использовать экземпляр ApplicationController
.
ApplicationController < ActionController::Base
def example
"O HAI"
end
end
Затем в консоли вы можете сделать следующее:
>> ApplicationController.new.example
В результате вы получите следующее:
O HAI
Это, конечно, имеет ограничение на отсутствие доступа ко всему нормальному запросу, например самому объекту request
. Если вам это нужно, как предложил Патрик Клингеманн, вы можете использовать отладчик... Я лично рекомендую использовать Pry:
Скорее всего, это слишком поздно для вас, но, надеюсь, это поможет кому-то в будущем.
использовать отладчик:
в 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
Это не совсем вопрос, но вы также можете отлаживать его с помощью 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
для каждого нового шага метода и поиграйте со своими переменными, которые могут быть напечатаны (просто набрав их) в режиме реального времени!