Aby wywołać pomocników, użyj helper
obiektu:
$ ./script/console
>> helper.number_to_currency('123.45')
=> "R$ 123,45"
Jeśli chcesz skorzystać z pomocnika, który nie jest włączone domyślnie (powiedzmy, ponieważ usunięto helper :all
z ApplicationController
), po prostu zawierać pomocnika.
>> include BogusHelper
>> helper.bogus
=> "bogus output"
Jeśli chodzi o kontrolery , cytuję odpowiedź Nicka :
> app.get '/posts/1'
> response = app.response
# you now have a rails response object much like the integration tests
> response.body # get you the HTML
> response.cookies # hash of the cookies
# etc, etc
app.get
(pojawia się błąd wątku). Czy istnieje sposób, aby opróżnić system i wykonać więcej operacji pobierania?url_for
z konsoli. Aby to zrobić, zrobiłemapp.url_for(...)
NoMethodError: undefined method `protect_against_forgery?' for nil:NilClass
zdefiniować funkcję wywoływanąprotect_against_forgery?
w konsoli, która zwracafalse
ActionDispatch::Integration::Session.include(Warden::Test::Helpers); Warden.test_mode! ; app.login_as(User.find(1), scope: :user)
.Prostym sposobem wywołania akcji kontrolera ze skryptu / konsoli i wyświetlenia / manipulowania obiektem odpowiedzi jest:
Obiekt aplikacji jest instancją ActionController :: Integration :: Session
Działa to dla mnie przy użyciu Ruby on Rails 2.1 i 2.3 i nie próbowałem wcześniejszych wersji.
źródło
Jeśli chcesz przetestować z konsoli (testowane na Ruby on Rails 3.1 i 4.1):
Działania kontrolera połączeń:
Metody ApplicationController:
Pomocnicy trasy:
Wyświetl pomocników:
Renderowanie:
Metody ActiveSupport:
Moduły Lib:
źródło
Oto jeden ze sposobów, aby to zrobić za pomocą konsoli:
Utworzenie nowej instancji
ActionView::Base
daje dostęp do normalnych metod widoku, z których prawdopodobnie korzysta Twój pomocnik. Następnie rozszerzenieYourHelperModule
miksuje swoje metody w obiekcie, umożliwiając przeglądanie ich zwracanych wartości.źródło
Jeśli metoda jest
POST
metodą, to:(Tutaj parametry będą zgodne z Twoim zastosowaniem).
W przeciwnym razie, jeśli jest to
GET
metoda, to:źródło
app.methods.grep(/_path/)
:)controler/action
zależy od twoich tras, np. Może być/users/all
i mapować doApi::UsersController#index
:)rake routes
. :)Innym sposobem na to jest skorzystanie z debugera Ruby on Rails. Istnieje przewodnik Ruby on Rails na temat debugowania na stronie http://guides.rubyonrails.org/debugging_rails_applications.html
Zasadniczo uruchom serwer z opcją -u:
A następnie wstaw punkt przerwania do skryptu, w którym chcesz mieć dostęp do kontrolerów, pomocników itp.
Po złożeniu żądania i naciśnięciu tej części kodu konsola serwera zwróci monit, w którym można następnie wysyłać żądania, wyświetlać obiekty itp. Z wiersza polecenia. Po zakończeniu wpisz „cont”, aby kontynuować wykonywanie. Istnieją również opcje rozszerzonego debugowania, ale powinno to przynajmniej zacząć.
źródło
Oto jak wykonać uwierzytelnione żądanie POST na przykładzie Rafinerii:
Te mogą być również przydatne, jeśli pojawi się błąd:
źródło
NameError: undefined local variable or method app for main:Object
ApplicationController.allow_forgery_protection = false
Możesz uzyskać dostęp do swoich metod w konsoli Ruby on Rails w następujący sposób:
źródło
W Ruby on Rails 3 spróbuj tego:
Treść będzie zawierać kod HTML adresu URL.
Jak trasować i renderować (wysyłać) z modelu w Ruby on Rails 3
źródło
Wcześniejsze odpowiedzi wywołują pomocników, ale poniższe pomogą w wywołaniu metod kontrolera. Użyłem tego na Ruby on Rails 2.3.2.
Najpierw dodaj następujący kod do pliku .irbrc (który może znajdować się w katalogu domowym)
Następnie w konsoli Ruby on Rails możesz wpisać coś takiego ...
... a HTML zostanie zrzucony do konsoli.
źródło
Wewnątrz dowolnej akcji lub widoku kontrolera można wywołać konsolę, wywołując metodę konsoli .
Na przykład w kontrolerze:
Lub w widoku:
Spowoduje to wyświetlenie konsoli w twoim widoku. Nie musisz dbać o lokalizację połączenia z konsolą; nie będzie renderowany w miejscu wywołania, ale obok treści HTML.
Zobacz: http://guides.rubyonrails.org/debugging_rails_applications.html
źródło
W przypadku kontrolerów możesz utworzyć obiekt kontrolera w konsoli Ruby on Rails.
Na przykład,
źródło
def show response = @user.contributions end
Jak zastąpić@user
zmienną?Jednym z możliwych podejść do testowania metod pomocniczych w konsoli Ruby on Rails jest:
I do przeładowania wykonaj:
źródło
Jeśli dodałeś własnego pomocnika i chcesz, aby jego metody były dostępne w konsoli, wykonaj:
include YourHelperName
method_name(args)
w konsoli.Przykład: powiedz, że masz MyHelper (z metodą
my_method
) w 'app / helpers / my_helper.rb`, a następnie w konsoli wykonaj:include MyHelper
my_helper.my_method
źródło