# Setup views to write to file 'console.log'.
>> Hirb::View.render_method = lambda {|output| File.open("console.log", 'w') {|f| f.write(output) } }
# Doesn't write to file because Symbol doesn't have a view and thus defaults to irb's echo mode.
>> :blah
=> :blah
# Go back to printing Hirb views to STDOUT.
>> Hirb::View.reset_render_method
7条答案
按热度按时间jhdbpxl91#
一个快速的一次性解决方案:
字符串
创建一个JSON fixture:
型
izkcnapc2#
您可以使用override
$stdout
重定向控制台输出:字符串
您可能还需要调用此命令一次:
型
要恢复,请执行以下操作:
型
2nbm6dog3#
除了Veger的答案,还有一种方法可以做到这一点,它也提供了许多其他的选择。
打开你的rails项目目录,输入命令:
字符串
tee命令还有许多其他选项,您可以通过以下方式检出:
型
tvokkenx4#
如果在环境文件中编写以下代码,它应该可以工作。
字符串
您还可以使用
型
为了只记录与活动记录相关的操作,您可以
型
这也允许您在不同的环境中使用不同的logger config/file。
7bsow1i65#
使用Hirb,你可以选择只将Hirb输出记录到一个文本文件中。这使得你仍然可以看到你在控制台窗口中输入的命令,只有模型输出会进入文件。
从Hirb readme:
虽然视图默认打印到STDOUT,但可以轻松修改它们以写入任何位置:
字符串
webghufk6#
如果您使用的是基于Unix的操作系统,请尝试使用
script
实用程序。script -c "rails runner -e development lib/scripts/my_script.rb" report.txt
个这帮助我轻松地将Rails runner脚本的超长输出捕获到文件中。
我尝试使用重定向到一个文件,但它只在脚本结束时写入(就像脚本执行结束时一样)。这对我没有帮助,因为我的脚本中几乎没有交互式命令。
然后我只使用
script
,然后在脚本会话中运行rails runner
,但它没有写所有内容。然后我找到了这个script -c "runner command here" output_file
,它按照需要保存了所有输出。这是在Ubuntu 14.04 LTS上参考文献:
https://askubuntu.com/questions/290322/how-to-get-and-copy-a-too-long-output-completely-in-terminal#comment1668695_715798
将Ruby控制台输出写入文本文件
rhfm7lfc7#
使用hirb。它会自动分页irb中任何长于一个屏幕的输出。将其放入控制台会话中以查看其工作情况:
字符串
更多关于它是如何工作的,read this post。