小编mos*_*shi的帖子

写一个原子操作

根据http://en.wikipedia.org/wiki/Atomicity_(database_systems),我想用Ruby执行一些原子性方法.

例如,如果我有:

a = 30
b = 75
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情:

atomic_operation do
  a += 10
  b -= 39
end
Run Code Online (Sandbox Code Playgroud)

Ruby 1.9中是否存在允许此类过程的本机模块?如果可能的话,我想在不使用插件的情况下这样做.非常感谢!

ruby transactions atomic atomicity ruby-1.9

7
推荐指数
3
解决办法
4317
查看次数

Ruby:如何通过继承挂钩回调

我在 Ruby 中遇到了一些关于回调(和继承)的问题。这是我的代码:

class Lmao
  def initialize
    @str = "HAHAHAHAHAHHAHAHAH"
    @before_laughing = []
  end

  def self.inherited(base)
    base.extend(Callbacks)
  end

  def laughing
    @before_laughing.each {|method| send(method) }
    @str
  end
end

module Callbacks
  def before_laughing(*methods)
    @before_laughing = methods
  end
end

class Lol < Lmao
  before_laughing :downcase_please

  def downcase_please
    @str.downcase!
  end
end

a = Lol.new
a.laughing # => "HAHAHAHAHAHHAHAHAH"
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的笑前回调不起作用...因为数组 @before_laughing 是空的。我相信可以通过编辑将 *methods 保存到 Lol 实例方法中的方式(从回调内部)来解决此问题。但我真的不明白如何...

如果您知道解决方案,感谢您的光临!

ruby hook inheritance callback

5
推荐指数
1
解决办法
5417
查看次数

对Ruby字符串进行分类

我有一个程序,可以创建如下所示的类:

  MyClass = Class.new do
    def initialize; end
    # ...
  end
Run Code Online (Sandbox Code Playgroud)

但我想从字符串中动态命名MyClass.因为它是一个类的名称,我想对该字符串进行分类,例如(感谢Rails方法):

  "hello_world".classify # => "HelloWorld"
Run Code Online (Sandbox Code Playgroud)

我不知道在纯Ruby中是否有一种方法.

谢谢

ruby string metaprogramming

2
推荐指数
2
解决办法
7934
查看次数