如何在 rails 控制台中将控制器打印为文本?
How to print a controller as text in the rails console?
我想查看 Devise::RegistrationsController
(出于好奇,我将继承它 here)
我尝试了明显的 rails c
然后 puts Devise::RegistrationsController
和一些变体(例如 .to_s
)但没有运气..
是否可以在某处查看,我可以将其打印到 rails 控制台进行查看吗?
Pry IRB 的替代控制台内置了源代码浏览。
安装 pry-rails
gem 并使用 rails c
启动控制台,它将启动 Pry 而不是 IRB。
然后您可以使用 show-source
从控制台直接查看 gem 的源代码:
max@pop-os ~/p/sandbox> rails c
Running via Spring preloader in process 29286
Loading development environment (Rails 6.0.2.1)
[1] pry(main)> show-source Devise::RegistrationsController
From: /home/linuxbrew/.linuxbrew/lib/ruby/gems/2.7.0/gems/devise-4.7.2/app/controllers/devise/registrations_controller.rb @ line 3:
Class name: Devise::RegistrationsController
Number of monkeypatches: 4. Use the `-a` option to display all available monkeypatches
Number of lines: 166
class Devise::RegistrationsController < DeviseController
prepend_before_action :require_no_authentication, only: [:new, :create, :cancel]
prepend_before_action :authenticate_scope!, only: [:edit, :update, :destroy]
prepend_before_action :set_minimum_password_length, only: [:new, :edit]
# GET /resource/sign_up
def new
build_resource
yield resource if block_given?
respond_with resource
end
# POST /resource
def create
build_resource(sign_up_params)
resource.save
yield resource if block_given?
if resource.persisted?
if resource.active_for_authentication?
set_flash_message! :notice, :signed_up
sign_up(resource_name, resource)
respond_with resource, location: after_sign_up_path_for(resource)
else
set_flash_message! :notice, :"signed_up_but_#{resource.inactive_message}"
expire_data_after_sign_in!
respond_with resource, location: after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
set_minimum_password_length
respond_with resource
end
end
:
如果您不想依赖撬动并坚持使用 IRB,您可以 cobble something together with Method#source_location
和 IO.readlines。但恕我直言,这似乎是在浪费时间
我想查看 Devise::RegistrationsController
(出于好奇,我将继承它 here)
我尝试了明显的 rails c
然后 puts Devise::RegistrationsController
和一些变体(例如 .to_s
)但没有运气..
是否可以在某处查看,我可以将其打印到 rails 控制台进行查看吗?
Pry IRB 的替代控制台内置了源代码浏览。
安装 pry-rails
gem 并使用 rails c
启动控制台,它将启动 Pry 而不是 IRB。
然后您可以使用 show-source
从控制台直接查看 gem 的源代码:
max@pop-os ~/p/sandbox> rails c
Running via Spring preloader in process 29286
Loading development environment (Rails 6.0.2.1)
[1] pry(main)> show-source Devise::RegistrationsController
From: /home/linuxbrew/.linuxbrew/lib/ruby/gems/2.7.0/gems/devise-4.7.2/app/controllers/devise/registrations_controller.rb @ line 3:
Class name: Devise::RegistrationsController
Number of monkeypatches: 4. Use the `-a` option to display all available monkeypatches
Number of lines: 166
class Devise::RegistrationsController < DeviseController
prepend_before_action :require_no_authentication, only: [:new, :create, :cancel]
prepend_before_action :authenticate_scope!, only: [:edit, :update, :destroy]
prepend_before_action :set_minimum_password_length, only: [:new, :edit]
# GET /resource/sign_up
def new
build_resource
yield resource if block_given?
respond_with resource
end
# POST /resource
def create
build_resource(sign_up_params)
resource.save
yield resource if block_given?
if resource.persisted?
if resource.active_for_authentication?
set_flash_message! :notice, :signed_up
sign_up(resource_name, resource)
respond_with resource, location: after_sign_up_path_for(resource)
else
set_flash_message! :notice, :"signed_up_but_#{resource.inactive_message}"
expire_data_after_sign_in!
respond_with resource, location: after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
set_minimum_password_length
respond_with resource
end
end
:
如果您不想依赖撬动并坚持使用 IRB,您可以 cobble something together with Method#source_location
和 IO.readlines。但恕我直言,这似乎是在浪费时间