Ketika saya memuat script/console
, kadang-kadang saya ingin bermain dengan output dari controller atau metode view helper.
Apakah ada cara untuk:
- mensimulasikan permintaan?
- memanggil metode dari instance pengontrol atas permintaan tersebut?
- menguji metode pembantu, baik melalui instance controller tersebut atau dengan cara lain?
app.get
(terjadi kesalahan thread). Apakah ada cara saya bisa flush sistem dan mengeksekusi mendapat lebih banyak?url_for
dari konsol. Untuk melakukan ini saya lakukanapp.url_for(...)
NoMethodError: undefined method `protect_against_forgery?' for nil:NilClass
menentukan fungsi yang disebutprotect_against_forgery?
di dalam konsol yang mengembalikanfalse
ActionDispatch::Integration::Session.include(Warden::Test::Helpers); Warden.test_mode! ; app.login_as(User.find(1), scope: :user)
.Cara mudah untuk memanggil aksi pengontrol dari skrip / konsol dan melihat / memanipulasi objek respons adalah:
Objek aplikasi adalah turunan dari ActionController :: Integration :: Session
Ini berfungsi untuk saya menggunakan Ruby on Rails 2.1 dan 2.3, dan saya tidak mencoba versi sebelumnya.
sumber
Jika Anda perlu menguji dari konsol (diuji pada Ruby on Rails 3.1 dan 4.1):
Tindakan Kontrol Panggilan:
Metode ApplicationController:
Rute Pembantu:
Lihat Pembantu:
Memberikan:
Metode ActiveSupport:
Modul Lib:
sumber
Inilah salah satu cara untuk melakukan ini melalui konsol:
Membuat instance baru
ActionView::Base
memberi Anda akses ke metode tampilan normal yang kemungkinan akan digunakan pembantu Anda. Kemudian memperluasYourHelperModule
mencampur metodenya ke objek Anda memungkinkan Anda melihat nilai kembali mereka.sumber
Jika metode tersebut adalah
POST
metode, maka:(Di sini parameter akan sesuai dengan penerapan Anda.)
Kalau bukan itu
GET
metode, maka:sumber
app.methods.grep(/_path/)
:)controler/action
, tergantung pada rute Anda, misalnya bisa/users/all
dan peta keApi::UsersController#index
:)rake routes
. :)Cara lain untuk melakukan ini adalah dengan menggunakan debugger Ruby on Rails. Ada panduan Ruby on Rails tentang debugging di http://guides.rubyonrails.org/debugging_rails_applications.html
Pada dasarnya, mulai server dengan opsi -u:
Dan kemudian masukkan breakpoint ke skrip Anda di mana Anda ingin memiliki akses ke controller, helpers, dll.
Dan ketika Anda membuat permintaan dan menekan bagian itu dalam kode, konsol server akan mengembalikan prompt di mana Anda kemudian dapat membuat permintaan, melihat objek, dll dari prompt perintah. Setelah selesai, ketikkan 'cont' untuk melanjutkan eksekusi. Ada juga opsi untuk debugging yang diperluas, tetapi ini setidaknya harus Anda mulai.
sumber
Berikut ini cara membuat permintaan POST terotentikasi, menggunakan Refinery sebagai contoh:
Anda mungkin menemukan ini berguna juga jika Anda mendapatkan kesalahan:
sumber
NameError: undefined local variable or method app for main:Object
ApplicationController.allow_forgery_protection = false
Anda dapat mengakses metode Anda di konsol Ruby on Rails seperti berikut:
sumber
Di Ruby on Rails 3, coba ini:
Badan akan berisi HTML URL.
Cara merutekan dan membuat (mengirim) dari model di Ruby on Rails 3
sumber
Jawaban sebelumnya memanggil bantuan, tetapi yang berikut akan membantu memanggil metode pengontrol. Saya telah menggunakan ini di Ruby on Rails 2.3.2.
Pertama tambahkan kode berikut ke file .irbrc Anda (yang bisa di direktori home Anda)
Kemudian di konsol Ruby on Rails Anda dapat mengetik sesuatu seperti ...
... dan HTML akan dibuang ke konsol.
sumber
Di dalam aksi atau tampilan pengontrol apa pun, Anda dapat memanggil konsol dengan memanggil metode konsol .
Misalnya, dalam pengontrol:
Atau dalam tampilan:
Ini akan membuat konsol di dalam tampilan Anda. Anda tidak perlu peduli dengan lokasi panggilan konsol; itu tidak akan diberikan di tempat doa tetapi di sebelah konten HTML Anda.
Lihat: http://guides.rubyonrails.org/debugging_rails_applications.html
sumber
Untuk pengontrol, Anda bisa instantiate objek pengontrol di konsol Ruby on Rails.
Sebagai contoh,
sumber
def show response = @user.contributions end
Bagaimana cara mengganti@user
variabel?Salah satu pendekatan yang mungkin untuk pengujian metode Helper di konsol Ruby on Rails adalah:
Dan untuk memuat ulang lakukan:
sumber
Jika Anda telah menambahkan pembantu Anda sendiri dan Anda ingin metodenya tersedia di konsol, lakukan:
include YourHelperName
method_name(args)
konsol.Contoh: misalkan Anda memiliki MyHelper (dengan metode
my_method
) di 'app / helpers / my_helper.rb`, kemudian di konsol lakukan:include MyHelper
my_helper.my_method
sumber