Tag: 约定

在Gemfile和.ruby-version Dotfile中列出Ruby版本是不好的做法吗?

我最新的Rails项目或多或少都在试验我在这个过程中打破很多东西并学习。 我在我的gemfile中指定了最新版本的Ruby: ruby ‘2.2.3’ 我在项目中也有一个.ruby-version dotfile,其中包含以下内容: 2.2.3 除了明显的重复之外,这有什么问题? 这两个公约的目的是什么? 如果我只有一个列出我的Ruby版本的约定,为什么我应该有一个(Gemfile)而另一个(dotfile)? 在项目中同时使用这两个约定是完全可以的吗? 我将成为这个实验项目的唯一维护者,并且不会觉得必须保持这个微妙的重复是一个问题。 我不打算为这个项目升级Ruby,如果我这样做,我不会在两个地方都有这个问题。 除了这个细节,我当然避免在我的应用程序的代码库中出现任何重复。

在Ruby中识别方法的#约定的基本原理/历史是什么?

例如,我总是看到称为String#split ,但从来没有看过String.split ,这似乎更符合逻辑。 或者甚至可能是String::split ,因为你可以认为#split在String的命名空间中。 当假定/隐含类( #split )时,我甚至独自看过这个方法。 我知道这是在ri中识别方法的方式。 哪个先来? 这是区分,例如,来自字段的方法? 我也听说这有助于区分实例方法和类方法。 但这是从哪里开始的?

Ruby中的失败与提升:我们真的应该相信风格指南吗?

Ruby提供了两种以编程方式引发exception的可能性: raise和fail ,两者都是Kernel方法。 根据文件,它们绝对相同。 出于习惯,我到目前为止只使用了raise 。 现在我找到了一些建议(例如这里 ),使用raise来捕获exception,并且对于不应该处理的严重错误而fail 。 但它真的有意义吗? 当你编写一个类或模块,并导致内部问题,你发出错误信号时,正在审查代码的编程同事可能会很高兴地理解你的意图,但使用我的代码的人很可能看不到在我的代码中无法知道exception是由raise还是由fail引起的。 因此,我谨慎使用raise或fail不会对他的决定产生任何影响,无论她是否应该处理。 有人会在我的论点中看到缺陷吗? 或者是否有其他标准,我可能想要使用fail而不是raise ?