2016-07-29 3 views
1

:irb에서 필요한 경우 일부 파일은 어떻게 실행되지 않습니까? 내가 <code>file.rb</code>이있는 경우

puts "Hello, World" 

다음 IRB 유형 :

require "./file.rb" 

출력은 Hello, World 될 것입니다.

왜 내가 sinatra 파일을 가지고 있다면?

require "sinatra" 
get "/" do 
    return "Hi" 
end 

출력이 필요하지 않습니까?

ruby sinatra_app.rb를 통해시나 파일을 실행하면이 랙 서버를 시작하고, CTRL + C를 누를 때까지 멈추지 않을 것입니다 무엇 해명

. 왜 irb에서 필요로 할 때 그것을하지 않지만, 명시 적으로 ruby sinatra_app.rb으로 실행될 때 그렇게합니까?

+0

마지막 코드 예에서 "sinatra"의 철자가 잘못되었습니다. – teksisto

답변

1

스크립트에서 아무 것도 출력하지 않기 때문에. 스크립트에 어떤 종류의 출력도 생성한다는 것을 보여주는 것은 없으며 어떤 파일에도 print, puts 또는 p, 아니 write을 호출 할 필요가 없습니다. 뭔가를 출력하기 때문에 require D 있기 때문에, 잘, 그것은 아무것도 인쇄하지 않을 때

첫 번째 스크립트는 두 번째 인쇄 아무것도 뭔가 할 때 require D를 인쇄합니다. 첫 번째 스크립트에서 puts에 대한 호출을 제거하면 아무 것도 인쇄되지 않습니다. 두 번째 스크립트에 puts에 대한 호출을 추가하면 무언가가 인쇄됩니다.

+0

화려한 대답. – mudasobwa

+1

하지만 서버를 시작하지 않는 이유는'ruby app.rb'를 실행하는 것과 같습니다. – thesecretmaster

+0

일반적으로이 스크립트는 아무 것도하지 않고 서버를 시작합니다. – thesecretmaster

0

해결 방법은 파일을 요구하기 전에 sinatra가 필요합니다.

루트 파일 :

require "sinatra" 
require "/tmp/ddd.rb" 

필수 파일 :

get "/" do 
    return "Hi" 
end 

내가 어떻게 든시나 시작 프로세스와 관련된 추측. 그들은 get 메서드를 기본 네임 스페이스에두고 모듈을 별도의 네임 스페이스로 구분하지 않습니다.

+0

이것은 실제로 대답이 아닙니다. 나는 이미 sinatras setup 과정과 관련이 있다고 추측 할 수 있지만, 구체적으로 묻는 중이다. – thesecretmaster