kik*_*ito 77 ruby console ruby-on-rails file
在bash控制台上,如果我这样做:
cd mydir
ls -l > mydir.txt
Run Code Online (Sandbox Code Playgroud)
>运算符捕获标准输入并将其重定向到文件; 所以我得到的文件列表mydir.txt而不是标准输出.
有没有办法在rails控制台上做类似的事情?
我有一个ruby语句,可以生成大量的打印件(~8k行),我希望能够完全看到它,但是控制台只能"记住"最后的1024行左右.所以我想重定向到一个文件 - 如果有人知道一个更好的选择,我都是耳朵.
Min*_*mul 131
如果您正在寻找快速的一次性解决方案,只需使用以下内容:
irb(main):001:0> f = File.new("statements.xml", 'w')
irb(main):002:0> f << Account.find(1).statements.to_xml
irb(main):003:0> f.close
Run Code Online (Sandbox Code Playgroud)
创建一个JSON fixture
>> f = File.new(Rails.root + 'spec/fixtures/qbo/amy_cust.json', 'w')
>> f << JSON.pretty_generate((q.get :customer, 1).as_json)
>> f.close
Run Code Online (Sandbox Code Playgroud)
Veg*_*ger 94
您可以使用override $stdout来重定向控制台输出:
$stdout = File.new('console.out', 'w')
Run Code Online (Sandbox Code Playgroud)
您可能还需要调用一次:
$stdout.sync = true
Run Code Online (Sandbox Code Playgroud)
这会将所有输出重定向到文件.如果要暂时重定向输出,请确保存储原始值,$stdout以便可以将其更改回来.
小智 10
除了Veger的答案之外,还有一种方法可以做到这一点,它还提供了许多其他选项.
只需打开rails项目目录并输入命令:
rails c | tee output.txt
Run Code Online (Sandbox Code Playgroud)
tee命令还有许多其他选项,您可以通过以下方式查看:
man tee
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48226 次 |
| 最近记录: |