如果我有file.rb
:
puts "Hello, World"
然后是irb类型:
require "./file.rb"
输出为Hello, World
。
为什么然后,如果我有一个sinatra文件,例如
require "sinatra"
get "/" do
return "Hi"
end
并要求,没有输出?
澄清
通过ruby sinatra_app.rb
执行sinatra文件的内容将启动机架服务器,并且在按下CTRL + C之前不会停止。为什么在irb中需要时不这样做,但是当它与ruby sinatra_app.rb
显式运行时它会这样做?
答案 0 :(得分:1)
因为脚本没有输出任何内容。您显示的脚本中没有任何内容可以生成任何类型的输出,没有调用print
,puts
或p
,没有write
来自任何文件什么都没有。
第一个脚本在require
d时打印一些东西,因为它打印了一些东西,第二个脚本在require
d时没有打印,因为它没有打印任何内容。从第一个脚本中删除对puts
的调用,它也不会打印任何内容。向第二个脚本添加对puts
的调用,它将打印一些内容。
答案 1 :(得分:0)
在要求文件之前需要解决方法。
根文件:
require "sinatra"
require "/tmp/ddd.rb"
必填文件:
get "/" do
return "Hi"
end
我猜这与Sinatra启动过程有某种关系。他们将get
方法放在默认命名空间中,而不将其命名为单独的模块。