在irb中需要时,如何执行某些文件?

时间:2016-07-29 15:01:32

标签: ruby sinatra irb

如果我有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显式运行时它会这样做?

2 个答案:

答案 0 :(得分:1)

因为脚本没有输出任何内容。您显示的脚本中没有任何内容可以生成任何类型的输出,没有调用printputsp,没有write来自任何文件什么都没有。

第一个脚本在require d时打印一些东西,因为它打印了一些东西,第二个脚本在require d时没有打印,因为它没有打印任何内容。从第一个脚本中删除对puts的调用,它也不会打印任何内容。向第二个脚本添加对puts的调用,它将打印一些内容。

答案 1 :(得分:0)

在要求文件之前需要解决方法。

根文件:

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

必填文件:

get "/" do
    return "Hi"
end

我猜这与Sinatra启动过程有某种关系。他们将get方法放在默认命名空间中,而不将其命名为单独的模块。