Ruby 代码的结构不打算成为 gem

Structure of Ruby code which is not intended to be a gem

我正在从事一个特定的项目,我必须在 openid_connect gem 之上编写一个 SDK(类似于 gem)。目前我的代码由单个文件(但我也将为其编写一些测试)和显示 SDK 使用的示例应用程序组成。问题是我无法将 SDK 作为 rubygem 发布,因为它必须被推送到与示例应用程序相同的 git 存储库。客户端将仅使用 SDK。 SDK 是一个单独的 class,里面有方法。

我目前的方法是在 RubyOnRails/lib 文件夹中编写 SDK(但 SDK 也必须与其他 ruby 框架一起使用)并让客户端下载位于示例应用程序的 lib 文件夹中的 SDK。

1)我的代码应该放在 lib 目录还是 vendor 目录中?或者有什么更好的方法?

2) 如何将此代码包含在 ruby 应用程序中?作为 gem 安装或由 require...

包含

3)测试是否可以放在与 SDK 相同的文件夹中(而不是在 rails /test 文件夹中)?

1) 听起来这段代码根本不依赖于 Rails。因此,请勿为其创建 Rails 项目。那将增加不必要的仪式和依赖。​​

2) 在 gem 的 git 存储库中包含示例文件没有任何问题。例如,您可以将它们放在名为 samplesexamples 的目录中。

3) 要创建常规 gem 目录结构,请使用 bundle:

bundle gem my_gem_name

4) 如果是 Minitest,您的测试应该放在名为 test 的目录中,如果是 RSpec.

,则应放在名为 spec 的目录中