看业务情况了吧,几个月前还写了个 rails 程序,其中有个 model 有个方法,大概有 200 行。。。囧。。。 不过那时 OO 还不熟悉,一切都谨小慎微,特别菜,现在来看重构下,加个两个 class,拆几个方法,大概最多的就是 30 行的样子。 再长点确实不太好看了。。。 写 gem 的话,可以再细化下,不然要被 BS 了吧~
#1 楼 @tualatrix 顶! 就说 rspec 的 api 设计,真是叹为观止。没有一个艺术天分太里面,搞不出来啊~ 当然咯,语言特性是必须非常精通才行。 还有很重要一点,就是要耐得住性子,浮躁的话是做不出精品的,你用可以,给你的公司用可以,但是开源的话没人会和你合作的。以前看 gem 源码,老感叹这些源码是用来干嘛的,这么奇怪,后来能看明白了,才知道,原来这就是我们说的地基,原来那些奇葩的上层用法,下面还隐藏着如此复杂精巧的组件。
rails g model/migration/integrate-test,这些偶尔还会用的,scaffold当初不太熟悉的时候,经常用。
从小浑身爱出汗。。。自从 3 年前开始跑步之后,倒是身上汗不是特别多了,但是手和脚还是非常汗。。。 好处是别人的键盘打油,我的键盘都好新。。。当然经常清洁咯
这有什么好笑的
user model 吗?
上面有人说了,用 session 或 cookies 来处理:
session[:hash] = {:name => 'ruby', :type => 'lang'} 或者 cookies.signed[:hash] = {...}
这样你 redirect 之后,就可以在下一个 controller 中使用 session[:hash] 或 cookies.signed[:hash] 把那个 hash 调出来。
原理就是 rails 会把那个 hash 用 marshal 做个序列化和签名,放到 cookie 里面。所以其实你将一个 model 的 obj 塞到里面都是可以的,我用过的一个地方就是 new resource 验证失败后,把包含 error 的 model obj 塞到 cookie 里,还是跳转 resource/new 页面,这样就避免了 scaffold 那种验证失败后留在/resources/页面的情况。
ubuntu 还是超好用的,尤其是 super+ 数字
openresty, nginx 直接运行 lua,没用过,但觉得很新鲜,那作者说 python 太慢了,要不也会考虑支持,那 ruby 就。。。 要不你就用 rack 吧,rails 就是 rack 中间件一层套一层来处理 request 的
半靠谱推荐。。。https://github.com/raggi/async_sinatra 好处是轻量,做单纯的 api 后台杠杠嘀(没见过大世面不靠谱评价) 缺点是 server 只能用 thin,没有 rails 那各种爽,各种第三方不如 rails 团队那么稳定
几十万的 IP 你就忙着收广告费吧。。。多添加几台服务器大不了。。。Rails 是可以改造成非阻塞的,所以你不用担心哦,等你上市了再换 C++ 还来得及。
盛大云的群里有几个家伙推荐阿里云 oss,客服也说了,可以盛大云主机+oss 嘛,便宜~
正在折腾超微,你不要 ip 不能 ssh 啊
如果一个应用: 1.前端面对大量并发 2.后台还要“缓慢的”和“复杂的”SQL 查询,或者还要连接到外网服务比如 Fackbook API,总之就是 IO 阻塞
这种场景你用 sinatra 就不行,假设只有一个 sinatra instance,那么前一个 request 的 SQL 查询没处理完并反馈给用户页面,后一个 request sinatra 就处理不了,这样在后端数据库能接受 100 个并发查询的时候,你前端一个 web server 只能并发一个查询,那么后端的数据库并发能力就被浪费了,前端的 sinatra web server 就成了瓶颈,而不是数据库了!这时你用 node 就非常好,因为 node 就可以一股脑把请求扔到数据库,前端再也不是瓶颈。
你在网上应该会看到大量的这种评测: 假设每次数据库查询用时 1 秒 ab -i 100 -n 1000 => 1100 秒 rails 或 sinatra 场景 ab -i 100 -n 1000 => 11 秒 node 场景(如果 eventmachine 估计就是 12 秒吧)
一般这种场景主要是 api,当然还是新浪微博那种最典型。我不知道一个下限,但如果你只是一个小博客,node 完全没意义,用 rails 多简单啊。
上面说了那么多,其实我 node 一点也没搞过(没实际项目只能算 0)。不过 ruby 的 eventmachine 我搞过,速度非常快,原理和 node 一模一样,如果你不想学 node 的话,你可以学 em。EM 的 api 有点别扭,你可以参考 https://github.com/igrigorik/async-rails ,这是个 fiber + em 的大并发实现,跟着他的模式写,应该比 node 舒服多了
贴个浏览器中的页面提示上来吧! 另外你不会还用 mysql 吧,现在 adapter 好像都用 mysql2 了
*貌似没什么错误啊,连接正常 sqlite3 也装了。。。。 * 你到底用的 sqlite3 还是 mysql 啊老兄。。。
1.9.2-p290 :001 > module A 1.9.2-p290 :002?> def foo 1.9.2-p290 :003?> puts "foo-A" 1.9.2-p290 :004?> end 1.9.2-p290 :005?> end => nil 1.9.2-p290 :006 > module B 1.9.2-p290 :007?> def foo 1.9.2-p290 :008?> puts "foo-B" 1.9.2-p290 :009?> end 1.9.2-p290 :010?> end => nil 1.9.2-p290 :011 > class C 1.9.2-p290 :012?> include A, B 1.9.2-p290 :013?> end => C 1.9.2-p290 :014 > C.new.foo foo-A => nil 1.9.2-p290 :015 > class D 1.9.2-p290 :016?> include A 1.9.2-p290 :017?> include B 1.9.2-p290 :018?> end => D 1.9.2-p290 :019 > D.new.foo foo-B => nil
听起来是像要 eval 才行,不过不太了解 rails 的机制,具体怎么 eval 你可以试试看
我做的项目,js 都不复杂,用不用 coffee 发现都一样哈。复杂的前端写起 coffee 来应该很给力,语法挺像 ruby,喜欢!
什么地方上学家在哪里,介绍下吧
关系型数据库麻烦点,听说 mongodb 好搞点
好像还有个 cycle helper 可以用,自己日一下