Rails Rails Console Tips

jun1st · 2014年06月07日 · 最后由 hustjackyan 回复于 2014年08月05日 · 8184 次阅读
本帖已被管理员设置为精华贴

清理 Console

当输出满屏时,想清理一下,在 bash 里可以用 clear,在 rails console 里,可以用

command+k

重新加载 rails 环境

console 环境不会自动加载修改后的文件,怎么办?退出重启?不需要!执行

reload!

搜索历史纪录

执行的 command 太多,往上可以用 uparrow, 往下可以用 downarrow。但是当执行的命令太多时,上下翻历史记录耗费的时间,比直接输入来的更多。其实 console 有搜索功能,Ctrl+R

[1] pry(main)> reload!
Reloading...
=> true
(reverse-i-search)`r': reload!

输入 r 出来 reload! . 第一个匹配的记录

Tab 补全

tab 补全,属性 bash 的应该对这个都不陌生。

上一个命名的结果

执行完一条命令

>>Article.first

但其实你还想对这个返回的 article 对象继续操作。再执行一遍?

>>article = Article.first

NO!你可以用

article = _

"_"保存着上一条命令返回的结果

发起 HttpRequest

>>app.get /
=> 200
>>app.get /orders
=> 302

Rails 沙盒

console 可以已沙盒的模式运行,

rails console --sandbox
>>User.destroy(1)
>>exit
     (0.1ms) rollback transaction

Rails 环境

想要 test 环境的 console,除了

RAILS_ENV=test rails c

更简单的是

rails c test

不错,谢谢分享

感谢楼主,补充下 清理 Console 其实可以用 ctrl + L ,rails 和 bash,zsh 等环境通用,

不错,很实用

保存最后运行结果那个好用!

嗯,学习了 article = _

"_"保存着上一条命令返回的结果 新技能 get√

发起 HttpRequest 这个真爽。

rails console --sandbox 应该只对支持 rollback 的 active record 有效。像 mongodb 这些就不起作用了,因为其本身不支持事务 rollback。另外 command+k,ctrl + r,tab 补全 这些功能,在 console 里面也是一样起作用的。

原来是可以测试 HttpRequest 的.. 学习了

匿名 #12 2014年06月09日

#9 楼 @ruby_sky "发起 HttpRequest " ,这个之前真不知道 😄

匿名 #14 2014年06月10日

#13 楼 @jun1st http://stackoverflow.com/questions/151030/how-do-i-call-controller-view-methods-from-the-console-in-rails

2.1.1 :001 > app.get '/feed'
=> 200
2.1.1 :002 > response = app.response
 => #<ActionDispatch::TestResponse:0x0000000575fe68 ......
2.1.1 :003 > response.body
 => "<xml>\n    <ToUserName> shunli </ToUserName>\n    <FromUserName>linachan</FromUserName>\n    <CreateTime> 2014-06-10 09:53:45 +0800</CreateTime>\n    <MsgType>20</MsgType>\n    <Content> hello world!  </Content>\n    <FuncFlag>0</FuncFlag>\n</xml>\n" 
2.1.1 :004 > response.cookies
 => {"request_method"=>"GET"} 

#14 楼 @chanshunli 要在 console 里测试 view 的 helper 的话,可以用helper.xx

app.get 竟然还有这个,爽

不错,确实有几个不知道。。。

#2 楼 @wcc526 CL 应该是打印很多空白行然后在输出吧。其实上面记录没有清理掉啊。CK 这样子 是把整个屏幕擦掉吧。

cmd + k 这些估计是通用的吧 "_"保存最后运行结果、HttpRequest 这两个:plus1:

23 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号