#22 楼 @yedingding 能详细说说 pragmatic 和 asana 的不同之处么?我看了 http://blog.pragmatic.ly/ripoff-asana-we-say-no-and-why-were-here/ 但是没有什么细节内容
#4 楼 @yangjie6020 这代码没有 carts
的路由啊...
#3 楼 @hooopo 其实我都 fork 了一个 www.ruby-lang.org 打算做点贡献... 但是仔细一看落下的进度实在太多了,感觉做不完 -_-||
This is very disturbing English … machine translation?
对什么暗号呢你们俩...
我也觉得这样写很正常..
这个写法感觉有点问题... 如果账户下只会有一条有效账单的话,最后的 .first
就多余;如果账户可以有不止一条有效账单,那 .first
就只能返回一条。
噢,我搞错了,是用来把 Relation
转成 Invoice
的 ...
怪了,我怎么会 rake
这么多呢...
#26 楼 @quakewang 希望能给个选择... 藏很深很角落让普通用户看不到就好了
http://stackoverflow.com/questions/2136380/ruby-equivalent-of-python-setattr
Either obj.instance_variable_set("@instance_variable", value)
or obj.send("instance_variable=", value)
.
#16 楼 @quakewang 这是出于什么考虑呢?我还是喜欢邮件直接注册
我想知道怎么注册账号……网站和 app 里都找不到
最后的「喜欢」是什么意思啊?
膜拜。
我不是高手啊,就是初学者,刚知道有这么个 API,翻了下文档:
Returns the current execution stack---an array containing strings in the form "file:line" or "file:line: in `method'". The optional start parameter determines the number of initial stack entries to omit from the result.
Returns nil if start is greater than the size of current execution stack.
我的理解是这样的...
比如说现在有个 test.rb
文件,里面是三个嵌套调用的 method 和几个最外层 method 调用 (照抄文档)
def a(skip) # line 1
caller(skip) # line 2
end # line 3
def b(skip) # line 4
a(skip) # line 5
end # line 6
def c(skip) # line 7
b(skip) # line 8
end # line 9
c(0) # line 10 => ["test.rb:2:in `a'", "test.rb:5:in `b'", "test.rb:8:in `c'", "test.rb:10:in `<main>'"]
c(1) # line 11 => ["test.rb:5:in `b'", "test.rb:8:in `c'", "test.rb:11:in `<main>'"]
c(2) # line 12 => ["test.rb:8:in `c'", "test.rb:12:in `<main>'"]
c(3) # line 13 => ["test.rb:13:in `<main>'"]
c(4) # line 14 => []
c(5) # line 15 => nil
第 10 行运行时,代码执行次序是 line 10 -> line 8 -> line 5 -> line 2,在 line 2 遇到了 caller
method,于是就把这个执行 stack 给放在一个数组里面 return 出来了,数组排序是执行次序反过来。
第 11 行运行时,代码执行次序是 line 11 -> line 8 -> line 5 -> line 2,在 line 2 遇到了 caller
method,于是又把这个执行 stack 给 return 出来,但是 11 行传进去的参数是 1,所以第一个元素 (应该是 "test.rb:2:in
a'"` 就被忽略掉了。
以下类推...
回到楼主的问题,如果在 test.rb
的最后添加一句
......
c(1..-1) # line 16
会 return 什么呢?
推测:第 16 行运行时,代码执行顺序是 line 16 -> line 8 -> line 5 -> line 2,在 line 2 遇到 caller
method , 此时把 stack 放进数组 return 出来。完整的数组应该是:
["test.rb:2:in `a'", "test.rb:5:in `b'", "test.rb:8:in `c'", "test.rb:16:in `<main>'"]
但是传入了一个 range : 1..-1
,这个 range 其实就是去掉数组的第一个元素 (index 0)
所以推测最后结果应该是:
["test.rb:5:in `b'", "test.rb:8:in `c'", "test.rb:16:in `<main>'"]
经测试正确...
测试了下 data = a && b
的执行顺序是 data = (a && b)
而不是 (data = a) && b
。这样就和 #2 楼 实际情况一致了。
#3 楼 @goinaction 赋值操作不可能失败的
瞎猜 ing ... 判断 session['devise.googleapps_data']
以及session['devise.googleapps_data']['user_info']
都不是 nil
吧,顺便把 session['devise.googleapps_data']
赋值给 data
?