||=
不等同于 a || a = b
ruby
a || a = 2
# NameError: undefined local variable or method `a' for main:Object
a ||= 2
# returns 2
@no13bus Star Recode?
可能这样子?
Topic.join(:creator).where('creator_id' => current_user.friends.pluck(:id).push(current_user.id)).order('updated_at desc')
#13 楼 @xu_xiang_yang 感觉你没看清楚我的内容。。。 如果你用的是 CRuby,那么不需要纠结是否原子操作,只需要考虑何时 GVL 会释放,GVL 保证不了的当然要加锁。
a+=1
其实做的事情很多,不只是你想得那么简单
+=1
里并非自增,Ruby 里的 +
operator 实际上也是个 method call,所以支持 +=2
你本地的 cache 有问题,删除 /Users/xxxx/.rvm/gems/ruby-2.1.3/cache/web-console-2.0.0.gem
,重新 bundle 应该就可以
看到译文这里,感觉不对劲,回头看一眼原文,感觉这里 lz 表述有误
许多 C 的扩展不是线程安全的也没有 GIL, 这些 C 扩展就会出现问题。
原文
a lot of C extensions are not thread safe and without the GIL, these C extensions don’t behave properly.
这里是说很多 C 扩展不是线程安全的, 没有 GIL 的话 ,这些 C 扩展就不能正确工作
#1 楼 @xiaoronglv 我猜第一种情况应该已经不会发生了
2.16.1 (sidekiq changelog)
Revert usage of resolv-replace. MRI's native DNS lookup releases the GIL.
多线程都需要注意一些 C Extensions 的 GIL block 住整个进程。
不知道你的真实需求,按照你原帖的代码,你为什么不写成这样?
[1,2,3,4].map {|num| {number: num-1, index: num}}
因为你的 su 里面实际只是同一个 data 的引用 而已。
而且你实际需要的方法也应该是 map
#8 楼 @zhutingting 抛开 Ruby,有哪个实际的项目是在不停不停更新自己用的前端 library? 即使 gem 更新速度 跟原生前端项目一样快,光那些 Library 的 API 变化就该改死人了
另外,没有人说过,用 Rails 的话,前端就必须要用 gem,用 bower 也完全没问题,再粗糙点直接复制粘贴都行。
从 lion 一路升级到 yosemite,每次都是升级不是全新安装,完全没感觉到卡。。。
你调用的是另一个同名方法
def safe_attributes(*args)
@safe_attributes ||= []
if args.empty?
if superclass.include?(Redmine::SafeAttributes)
@safe_attributes + superclass.safe_attributes
else
@safe_attributes
end
else
options = args.last.is_a?(Hash) ? args.pop : {}
@safe_attributes << [args, options]
end
end
safari 8.02 开很多页面会卡住,可能是 safari 的 bug
做过类似的事情,按照 sinatra 源码的组织方式,一个 commit 一个 commit 的重新搭建 sinatra https://github.com/serco-chen/rebuilding_sinatra
#1 楼 @Rei 推荐看一下 http://realmacsoftware.com/typed 几乎是可视化的 markdown 编辑器
@lotus 我来回答你第一个问题吧。
这个是 Arel 的一个问题,https://github.com/rails/arel/pull/262 但是 MySQL 并不支持在 update syntax 里使用 offset,http://dev.mysql.com/doc/refman/5.5/en/update.html
所以 Arel 的维护者,包括这个 issue 的提交者觉得这个并不应该是个合理的行为,毕竟你用 MySQL 调用的时候自动会忽略 offset,用 PG 则会加上 offset 就会很奇怪。
方括号用来访问 hash,取得的值是一个 lambda,所以用 call 来调用
#16 楼 @gerry1004 或者字典的解释已经跟我们上学的时候不一样了,哈哈
#1 楼 @xiaoronglv 我觉得应该是多余的,从定义上来看。
Exit immediately if a pipeline (see Pipelines), which may consist of a single simple command (see Simple Commands), a subshell command enclosed in parentheses (see Command Grouping), or one of the commands executed as part of a command list enclosed by braces (see Command Grouping) returns a non-zero status. The shell does not exit if the command that fails is part of the command list immediately following a while or until keyword, part of the test in an if statement, part of any command executed in a && or || list except the command following the final && or ||, any command in a pipeline but the last, or if the command’s return status is being inverted with !. A trap on ERR, if set, is executed before the shell exits.
This option applies to the shell environment and each subshell environment separately (see Command Execution Environment), and may cause subshells to exit before executing all the commands in the subshell.
如果只是想复用一些代码,可以使用 UnboundMethod
module A
def test(a)
puts a + 1
end
end
un_test = A.instance_method(:test)
class B
end
new_test1 = un_test.bind(B)
new_test1.call(5)
另外关于为什么 eval 不能定义局部变量
locals are bound at compile-time since 1.9
官方当然可以,我重新写一个是觉得官方的部分方法我觉得太复杂了。 比方我不想每次创建 charge 都设置一次 app_id 等等
另外就是我自己按照喜好加了一些 helper
是不是 feature specs, 用了 capybara cucumber 之类的?