小编Ben*_*ini的帖子

如何从Ruby的Net :: HTTP中的读取超时错误中判断连接超时错误

我的问题与如何解决超时问题(Ruby,Rails)有关.

以下是从超时中解救的常用方法:

def action
  # Post using Net::HTTP
rescue Timeout::Error => e
  # Do something
end
Run Code Online (Sandbox Code Playgroud)

我想确定在尝试连接到主机时是否引发了异常,或者是否在尝试从主机读取时引发了异常.这可能吗?

ruby

8
推荐指数
1
解决办法
5902
查看次数

什么是将大型课程分解为模块的好红宝石成语?

我有一个很大的类,有很多方法,它开始变得有点无组织,难以导航.我想将其分解为模块,其中每个模块都是类和实例方法的集合.也许是这样的:

更新:我现在意识到这是一个非常糟糕的例子.您可能不希望将验证或属性移出核心类.

class Large
  include Validations
  include Attributes
  include BusinessLogic
  include Callbacks
end
Run Code Online (Sandbox Code Playgroud)

在阅读了Yehuda关于Better Ruby Idioms的文章之后,我很好奇其他人如何解决这个问题.这是我能想到的两种方法.

第一种方法

module Foo
  module Validations
    module ClassMethods
      def bar
        "bar"
      end
    end

    module InstanceMethods
      def baz
        "baz"
      end
    end
  end

  class Large
    extend Validations::ClassMethods
    include Validations::InstanceMethods
  end
end
Run Code Online (Sandbox Code Playgroud)

第二种方法

module Foo
  module Validations
    def self.included(base)
      base.extend ClassMethods
    end

    module ClassMethods
      def bar
        "bar"
      end
    end

    def baz
      "baz"
    end
  end

  class Base
    include Validations
  end
end
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 有一个更好的方法吗?
  • 如何以最少的魔法为一组类/实例方法获得单行模块mixin?
  • 如何在没有命名空间类本身的情况下将这些模块命名为基类?
  • 你如何组织这些文件?

ruby refactoring module

3
推荐指数
1
解决办法
3077
查看次数

标签 统计

ruby ×2

module ×1

refactoring ×1