[RUBY-ON-RAILS] 어떻게 루비 온 레일즈 콘솔에서 컨트롤러 / 뷰 헬퍼 메소드를 호출 할 수 있습니다?
RUBY-ON-RAILS어떻게 루비 온 레일즈 콘솔에서 컨트롤러 / 뷰 헬퍼 메소드를 호출 할 수 있습니다?
내가 스크립트 / 콘솔을로드 할 때, 가끔은 컨트롤러의 출력 또는 뷰 도우미 메서드 놀고 싶어.
이 방법으로는 다음과 같습니다
해결법
-
==============================
1.도우미를 호출하려면, 도우미 개체를 사용 :
도우미를 호출하려면, 도우미 개체를 사용 :
$ ./script/console >> helper.number_to_currency('123.45') => "R$ 123,45"
(당신이 도우미를 제거하기 때문에, 말 :와 ApplicationController의 모든) 당신이 기본적으로 포함 아니에요 도우미를 사용하려면, 그냥 도우미를 포함한다.
>> include BogusHelper >> helper.bogus => "bogus output"
컨트롤러의 처리에 관해서는, 나는 닉의 답변을 인용 :
-
==============================
2.스크립트 / 콘솔보기에서 컨트롤러의 액션을 호출하는 쉬운 방법은 / 응답 객체를 조작 할 수 있습니다 :
스크립트 / 콘솔보기에서 컨트롤러의 액션을 호출하는 쉬운 방법은 / 응답 객체를 조작 할 수 있습니다 :
> app.get '/posts/1' > response = app.response # You now have a Ruby on Rails response object much like the integration tests > response.body # Get you the HTML > response.cookies # Hash of the cookies # etc., etc.
응용 객체는 ActionController :: 통합의 인스턴스 :: 세션
내가 레일 2.1 및 2.3에 루비를 사용하여, 나는 이전 버전을 시도하지 않은이 작동합니다.
-
==============================
3.당신은 (레일 3.1 및 4.1에 루비 테스트) 콘솔에서 테스트해야하는 경우 :
당신은 (레일 3.1 및 4.1에 루비 테스트) 콘솔에서 테스트해야하는 경우 :
컨트롤러 작업 전화 :
app.get '/' app.response app.response.headers # => { "Content-Type"=>"text/html", ... } app.response.body # => "<!DOCTYPE html>\n<html>\n\n<head>\n..."
와 ApplicationController 방법 :
foo = ActionController::Base::ApplicationController.new foo.public_methods(true||false).sort foo.some_method
경로 도우미 :
app.myresource_path # => "/myresource" app.myresource_url # => "http://www.example.com/myresource"
보기 도우미 :
foo = ActionView::Base.new foo.javascript_include_tag 'myscript' #=> "<script src=\"/javascripts/myscript.js\"></script>" helper.link_to "foo", "bar" #=> "<a href=\"bar\">foo</a>" ActionController::Base.helpers.image_tag('logo.png') #=> "<img alt=\"Logo\" src=\"/images/logo.png\" />"
세우다:
views = Rails::Application::Configuration.new(Rails.root).paths["app/views"] views_helper = ActionView::Base.new views views_helper.render 'myview/mytemplate' views_helper.render file: 'myview/_mypartial', locals: {my_var: "display:block;"} views_helper.assets_prefix #=> '/assets'
ActiveSupport 방법 :
require 'active_support/all' 1.week.ago => 2013-08-31 10:07:26 -0300 a = {'a'=>123} a.symbolize_keys => {:a=>123}
lib 디렉토리 모듈 :
> require 'my_utils' => true > include MyUtils => Object > MyUtils.say "hi" evaluate: hi => true
-
==============================
4.여기에 콘솔을 통해이 작업을 수행하는 하나 개의 방법이있다 :
여기에 콘솔을 통해이 작업을 수행하는 하나 개의 방법이있다 :
>> foo = ActionView::Base.new => #<ActionView::Base:0x2aaab0ac2af8 @assigns_added=nil, @assigns={}, @helpers=#<ActionView::Base::ProxyModule:0x2aaab0ac2a58>, @controller=nil, @view_paths=[]> >> foo.extend YourHelperModule => #<ActionView::Base:0x2aaab0ac2af8 @assigns_added=nil, @assigns={}, @helpers=#<ActionView::Base::ProxyModule:0x2aaab0ac2a58>, @controller=nil, @view_paths=[]> >> foo.your_helper_method(args) => "<html>created by your helper</html>"
ActionView :: 자료의 새로운 인스턴스를 생성하는 것은 당신에게 당신의 도우미 가능성이 사용하는 일반보기 방법에 액세스 할 수 있습니다. 그런 다음 확장 YourHelperModule는 자신의 반환 값을 확인시키는 개체에 메서드를 혼합합니다.
-
==============================
5.이 작업을 수행하는 또 다른 방법은 레일 디버거에 루비를 사용하는 것입니다. http://guides.rubyonrails.org/debugging_rails_applications.html에서 디버깅에 대한 루비 레일에 가이드가있다
이 작업을 수행하는 또 다른 방법은 레일 디버거에 루비를 사용하는 것입니다. http://guides.rubyonrails.org/debugging_rails_applications.html에서 디버깅에 대한 루비 레일에 가이드가있다
기본적으로 -u 옵션을 사용하여 서버를 시작합니다 :
./script/server -u
당신이 컨트롤러, 헬퍼 등에 액세스하고 싶은 곳 그리고 스크립트에 중단 점을 삽입
class EventsController < ApplicationController def index debugger end end
당신이 요청을하고 코드에서 그 부분을 칠 때, 서버 콘솔은 다음 프롬프트 명령 등을 요청, 뷰 객체를 만들 수있는 프롬프트를 반환합니다. 완료되면 바로 실행을 계속하기 위해 '계속'을 입력합니다. 이 확장 디버깅을위한 옵션도 있지만, 이것은 적어도 당신은 시작한다.
-
==============================
6.방법은 다음 POST 방식 인 경우 :
방법은 다음 POST 방식 인 경우 :
app.post 'controller/action?parameter1=value1¶meter2=value2'
(여기서 매개 변수는 적용에 따라 될 것입니다.)
그 다음 GET 방식 인 경우 다른 :
app.get 'controller/action'
-
==============================
7.여기에 예제로 정유를 사용하여 인증 된 POST 요청을하는 방법입니다 :
여기에 예제로 정유를 사용하여 인증 된 POST 요청을하는 방법입니다 :
# Start Rails console rails console # Get the login form app.get '/community_members/sign_in' # View the session app.session.to_hash # Copy the CSRF token "_csrf_token" and place it in the login request. # Log in from the console to create a session app.post '/community_members/login', {"authenticity_token"=>"gT7G17RNFaWUDLC6PJGapwHk/OEyYfI1V8yrlg0lHpM=", "refinery_user[login]"=>'chloe', 'refinery_user[password]'=>'test'} # View the session to verify CSRF token is the same app.session.to_hash # Copy the CSRF token "_csrf_token" and place it in the request. It's best to edit this in Notepad++ app.post '/refinery/blog/posts', {"authenticity_token"=>"gT7G17RNFaWUDLC6PJGapwHk/OEyYfI1V8yrlg0lHpM=", "switch_locale"=>"en", "post"=>{"title"=>"Test", "homepage"=>"0", "featured"=>"0", "magazine"=>"0", "refinery_category_ids"=>["1282"], "body"=>"Tests do a body good.", "custom_teaser"=>"", "draft"=>"0", "tag_list"=>"", "published_at(1i)"=>"2014", "published_at(2i)"=>"5", "published_at(3i)"=>"27", "published_at(4i)"=>"21", "published_at(5i)"=>"20", "custom_url"=>"", "source_url_title"=>"", "source_url"=>"", "user_id"=>"56", "browser_title"=>"", "meta_description"=>""}, "continue_editing"=>"false", "locale"=>:en}
오류가 발생하는 경우도 이러한 도움을 찾을 수 있습니다 :
app.cookies.to_hash app.flash.to_hash app.response # long, raw, HTML
-
==============================
8.당신은 다음과 같은 루비 온 레일스 콘솔에서 방법에 액세스 할 수 있습니다 :
당신은 다음과 같은 루비 온 레일스 콘솔에서 방법에 액세스 할 수 있습니다 :
controller.method_name helper.method_name
-
==============================
9.레일 3 루비,이 시도 :
레일 3 루비,이 시도 :
session = ActionDispatch::Integration::Session.new(Rails.application) session.get(url) body = session.response.body
몸은 URL의 HTML이 포함됩니다.
어떻게 행 노선 및 렌더링 (파견) 레일 3 루비의 모델
-
==============================
10.초기의 대답은 헬퍼를 호출하지만, 컨트롤러 메소드를 호출하기위한 도움이 될 것입니다 따르고 있습니다. 나는 레일 2.3.2에 루비에서이를 사용하고 있습니다.
초기의 대답은 헬퍼를 호출하지만, 컨트롤러 메소드를 호출하기위한 도움이 될 것입니다 따르고 있습니다. 나는 레일 2.3.2에 루비에서이를 사용하고 있습니다.
먼저 .irbrc 파일에 다음 코드를 추가합니다 (이 홈 디렉토리에있을 수 있습니다)
class Object def request(options = {}) url=app.url_for(options) app.get(url) puts app.html_document.root.to_s end end
그리고 루비 온 레일스 콘솔에서 당신이 뭔가를 입력 할 수 있습니다 ...
request(:controller => :show, :action => :show_frontpage)
... 그리고 HTML은 콘솔에 덤프됩니다.
-
==============================
11.어떤 컨트롤러 액션 또는 내부보기, 당신은 콘솔 메서드를 호출하여 콘솔을 호출 할 수 있습니다.
어떤 컨트롤러 액션 또는 내부보기, 당신은 콘솔 메서드를 호출하여 콘솔을 호출 할 수 있습니다.
예를 들어, 컨트롤러 :
class PostsController < ApplicationController def new console @post = Post.new end end
아니면보기 :
<% console %> <h2>New Post</h2>
이보기 내부 콘솔을 렌더링합니다. 당신은 콘솔 전화의 위치에 대해 신경 쓸 필요가 없습니다; 그것의 호출의 자리에서 렌더링하지만 HTML 콘텐츠 옆에되지 않습니다.
참조 : http://guides.rubyonrails.org/debugging_rails_applications.html
-
==============================
12.레일 콘솔에 루비 도우미 방법 테스트를위한 한 가지 방법은 다음과 같습니다
레일 콘솔에 루비 도우미 방법 테스트를위한 한 가지 방법은 다음과 같습니다
Struct.new(:t).extend(YourHelper).your_method(*arg)
그리고 재 장전을 위해 할 :
reload!; Struct.new(:t).extend(YourHelper).your_method(*arg)
-
==============================
13.컨트롤러를 들어, 루비 온 레일즈 콘솔의 컨트롤러 객체를 생성 할 수 있습니다.
컨트롤러를 들어, 루비 온 레일즈 콘솔의 컨트롤러 객체를 생성 할 수 있습니다.
예를 들어,
class CustomPagesController < ApplicationController def index @customs = CustomPage.all end def get_number puts "Got the Number" end protected def get_private_number puts 'Got private Number' end end custom = CustomPagesController.new 2.1.5 :011 > custom = CustomPagesController.new => #<CustomPagesController:0xb594f77c @_action_has_layout=true, @_routes=nil, @_headers={"Content-Type"=>"text/html"}, @_status=200, @_request=nil, @_response=nil> 2.1.5 :014 > custom.get_number Got the Number => nil # For calling private or protected methods, 2.1.5 :048 > custom.send(:get_private_number) Got private Number => nil
-
==============================
14.당신이 당신의 자신의 도우미를 추가하고 그 방법은 콘솔에서 사용할 수 있도록하려면, 수행
당신이 당신의 자신의 도우미를 추가하고 그 방법은 콘솔에서 사용할 수 있도록하려면, 수행
예 : 당신이 (메소드 my_method와) MyHelper가 있다고 가정에서 '응용 프로그램 / 도우미 / my_helper.rb`, 다음 콘솔에서 수행
from https://stackoverflow.com/questions/151030/how-can-i-call-controller-view-helper-methods-from-the-console-in-ruby-on-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] Heroku가 배치 오류 H10 (APP 추락) (0) | 2020.02.06 |
---|---|
[RUBY-ON-RAILS] 레일의 많은 관계로 많은 만들기 (0) | 2020.02.06 |
[RUBY-ON-RAILS] 협회에 계산에 의해 주문 : 3 액티브 레일 (0) | 2020.02.06 |
[RUBY-ON-RAILS] 어떻게 부하 DB에 : 씨앗 데이터 테스트 데이터베이스에 자동으로? (0) | 2020.02.06 |
[RUBY-ON-RAILS] 레일, MySQL과 스노우 레오파드 (Snow Leopard) (0) | 2020.02.06 |