从救援/引发错误中获取实例

时间:2013-12-16 23:26:45

标签: ruby-on-rails ruby error-handling

假设我有一个gem,其中一些方法被称为

      def grit
          @grit ||= Grit::Repo.new(path)
        rescue Grit::NoSuchPathError
          raise NoRepository.new('no repository for such path')
      end

假设现在我从我的rails app调用这个方法。有没有办法从我的应用程序中获取此NoRepository实例,或者我应该更改此方法以使其返回此实例?

2 个答案:

答案 0 :(得分:1)

我不确定fetch NoRepository实例的含义。基本上,您引用NoRepository实例的方式是从该错误中解救出来。

调用grit方法并从NoRepository救出的代码:

begin
  grit()
rescue NoRepository => nr
  # Here `nr` is the instance of NoRepository
end

答案 1 :(得分:0)

NoRepository不是存储库的实例,是path未引用有效git存储库时引发的异常。

该方法应该完全正常。

如果出于某种原因你需要获得一个repo实例而不通过grit助手,你可以直接打电话

 Grit::Repo.new(path)

传递路径,例如

 Grit::Repo.new('/tmp/foo')