例如,如果我进入IRB并执行以下操作:
jruby-1.6.7 :026 > puts [1,2,3,4,5]
1
2
3
4
5
=> nil
Run Code Online (Sandbox Code Playgroud)
反正有压制nil吗?问题是,如果我放入一个大型数据结构,它会发送一些其他不相关的返回响应.我更感兴趣的是看到调试语句的输出我在一个块中运行,并且必须不断向上滚动并查找真实数据.
如何抑制db:load:schema的输出?运行
bundle exec rake db:schema:load
Run Code Online (Sandbox Code Playgroud)
用-s,-q或甚至VERBOSE=false选项使得在输出没有差别; 我不想看的相同的"create_table ... add_index ..."垃圾出现了.我从自定义Rake任务中调用它,我不希望用户每次都看到所有这些.
更新:
我使用@Deefour的一些指导解决了这个问题:
system "bundle exec rake db:schema:load -s RAILS_ENV=#{Rails.env} >NUL"
Run Code Online (Sandbox Code Playgroud)
>NUL适用于Windows机器,基于Unix可以使用> /dev/null.
而不是
Rake::Task['db:schema:load'].invoke
Run Code Online (Sandbox Code Playgroud)
正如我在自定义任务中所做的那样.请注意,此解决方案特定于Windows计算机.对于基于Unix的机器,我想你应该能够使用下面接受的解决方案.
可能重复:
Rails控制台,如何停止返回值的输出?
在IRB中考虑此会话:
>> for a in 1..5 do
?> puts a
>> end
1
2
3
4
5
=> 1..5
>>
Run Code Online (Sandbox Code Playgroud)
如何抑制输出=> 1..5?如果我在Rails控制台会话中执行此操作,这很重要:
for post in Post.find(:all) do
if post.submit_time > Time.now
puts "Corrupted post #{post.id} is from the future"
end
end
Run Code Online (Sandbox Code Playgroud)
我不希望所有的帖子最后都作为一个数组打印出来.如何抑制输出?
我确信还有其他方法可以做到这一点,比如find_eachRuby脚本,但我更感兴趣的是在交互式会话中这样做.