2013-03-08 1 views
-6

루비로 프로그래밍 할 때 irb의 목적은 실시간으로 코드를 테스트하는 데 도움이된다는 것을 읽었습니다. 이전에 HTML과 CSS를 배웠고 그 당시에는 브라우저에서 페이지를 열고 페이지를 저장/새로 고침하여 코드를 테스트 할 수있었습니다. irb는 Ruby와 비슷한 기능을 수행합니까? 그렇다면 irb (Ruby와는 반대로)에서 Ruby 코드를 테스트하면 Ruby의 오류를 Javascript/HTML/등의 오류와 쉽게 구분할 수 있다는 이점이 있다고 생각할 수 있습니까? 어쨌든 Ruby 프로그램이 (이론적으로) 조만간 브라우저에서 실행된다는 것을 본다면 필자는 테스트 조건을 실제 사용 사례 환경에 가능한 한 가깝게 배치하려는 것처럼 보입니다.Ruby로 코딩 할 때 irb (GUI 기반 테스트 방법과 반대)를 사용하는 것이 왜 도움이됩니까?

+0

irb (및 일반적으로 명령 줄)를 제거하는 것은 말할 것도없이 나처럼 초보자에게는 배울 점이 적다는 것을 의미합니다. Least Astonishment의 원리 등. 나는 irb가 단점보다 중요한 이점을 누락하고 있다고 생각한다. 모두 초보자를 도와 주셔서 감사합니다. :-) –

+1

HTML/CSS와 달리 Ruby는 마크 업 언어가 아닙니다. 그리고 "조만간 Ruby 프로그램이 브라우저에서 실행될 것입니다."- 나는 당신이 무엇을 언급하는지 전혀 모릅니다. – sawa

+0

사용자의 주목을 받기 전에는 Ruby가 웹 언어 일 뿐이라는 인상을 받았습니다. 즉, 웹 브라우저에서만 실행됩니다. 이것은 내가 'Ruby 프로그램이 조만간 브라우저에서 실행될 것이라고 말했을 때 내가 언급 한 것입니다.' 이 문제를 해결하고 내 전반적인 질문에 답해 주신 각서에 감사드립니다. –

답변

6

이 질문은 테스트와 관련이 있으며 매우 광범위한 주제이지만 필자는 내 관점에서 질문에 대답하려고 노력할 것입니다.

우선 우리는 Ruby 및 관련 웹 기술에 관해 이야기 할 때 설득력있는 플랫폼에 동의해야합니다.

1 - Ruby는 엄격하게 웹 언어가 아닙니다. 이것은 큰 오해입니다. Ruby는 Ruby on Rails가 아닙니다. 그리고 대부분의 응용 프로그램은 현재 브라우저에서 끝나지 만 Ruby가 아닌 RoR 덕분입니다.

루비는 모든 언어로 거래되는 언어입니다. 그것은 많은 일을 할 수 있습니다. 스크립팅, 웹, "일반 응용 프로그램". 문제가 있다면 루비가 언어를 해결할 가능성이 있습니다.

2 - IRB는 Ruby의 REPL (읽기 eval 인쇄 루프)이거나 더 일반적으로 인터프리터이며 컴파일러가 아닙니다. 그것은 대화식 RuBy 셸의 약자입니다. 그래서에 대한 질문에

: 당신은 IRB와 perse을 테스트하지 않는

, 당신은 당신이로 IRB 생각할 수 1 + 1 혹은

my_name = "henrik" 
my_age = 28 
p = Person.new(my_name, my_age) 
p.my_name 
>> "henrik" 

같은 작은 유형 문을 테스트 IRB를 사용하여 "당신의 작은 테스트 마법사 ", 즉. "이게 효과가 있니? IRB에서 해보자!"

실제 테스트에서는 RSpec 또는 다른 유형의 테스트 프레임 워크를 사용하며 독립 실행 형 테스트를 수행하려는 경우 ruby my_test_file.rb을 수행 할 수 있습니다. my_test_file.rb에는 모든 테스트가 포함되어 있습니다.

RSpec이 내용은 Ruby에서 테스트를 시작할 때 매우 유용합니다.

설명하는 방식을 테스트하는 것은 매우 지루하지만 IRB와는 아무런 관련이 없습니다.

0

irb는 단 한 줄의 코드를 시험 적으로 테스트하는 데 적합합니다. 또한 Ruby의 인트로 스펙 션을 사용하여 사용 가능한 항목을 탐색 할 수 있습니다. 한 가지 내가 많은은 다음과 같이 간다 않는다 : 다른 많은 방법으로 그 목록을 얻을 수 있습니다

이제
irb 
1.9.3-p327 :001 > s = "This is a string" 
=> "This is a string" 
1.9.3-p327 :002 > s.methods.sort - Object.methods 
=> [:%, :*, :+, :<<, :[], :[]=, :ascii_only?, :between?, :bytes, :bytesize, :byteslice, :capitalize, :capitalize!, :casecmp, :center, :chars, :chomp, :chomp!, :chop, :chop!, :chr, :clear, :codepoints, :concat, :count, :crypt, :delete, :delete!, :downcase, :downcase!, :dump, :each_byte, :each_char, :each_codepoint, :each_line, :empty?, :encode, :encode!, :encoding, :end_with?, :force_encoding, :getbyte, :gsub, :gsub!, :hex, :index, :insert, :intern, :length, :lines, :ljust, :lstrip, :lstrip!, :match, :next, :next!, :oct, :ord, :partition, :prepend, :replace, :reverse, :reverse!, :rindex, :rjust, :rpartition, :rstrip, :rstrip!, :scan, :setbyte, :size, :slice, :slice!, :split, :squeeze, :squeeze!, :start_with?, :strip, :strip!, :sub, :sub!, :succ, :succ!, :sum, :swapcase, :swapcase!, :to_c, :to_f, :to_i, :to_r, :to_str, :to_sym, :tr, :tr!, :tr_s, :tr_s!, :unpack, :upcase, :upcase!, :upto, :valid_encoding?] 

하지만 나 같은 사람을 누가 몇 가지 다른 언어로 코드, 그리고 정렬 알고 내가하고 싶은 일의,하지만 반드시 올바른 루비 방법은 아닙니다. 나는 내가 필요로 생각하는 방법을 시험해 볼 수 있으며 그것이 옳은 일임을 알 수있다. . .

사용법을 배우고있는 라이브러리에서 메소드를 호출하고 리턴하는 유형을 확인하는 것과 같은 기타 유용한 것들이 많이 있습니다.