Rails gem命名约定

Ива*_*вац 3 ruby gem naming-conventions

假设有Foo服务,它有RESTful API.如果我想为它创建包装器:

bundle gem foo-api-client
Run Code Online (Sandbox Code Playgroud)

然后它创建以下结构:

foo-api-client/Gemfile
foo-api-client/Rakefile
foo-api-client/LICENSE.txt
foo-api-client/README.md
foo-api-client/.gitignore
foo-api-client/foo-api-client.gemspec
foo-api-client/lib/foo/api/client.rb
foo-api-client/lib/foo/api/client/version.rb
Run Code Online (Sandbox Code Playgroud)

我不需要单独的api模块,我想我应该离开它还是尝试改为:fooapi-client/lib/fooapi/client.rb

这有什么命名约定吗?

Nei*_*ter 6

bundle gem正在尝试构建一个与Rubygems网站上建议的命名约定相匹配的结构

从链接中获取的示例名称表:

Gem name               Require statement             Main class or module
fancy_require          require 'fancy_require'          FancyRequire
ruby_parser            require 'ruby_parser'            RubyParser
net-http-persistent    require 'net/http/persistent'    Net::HTTP::Persistent
rdoc-data              require 'rdoc/data'              RDoc::Data
autotest-growl         require 'autotest/growl'         Autotest::Growl
net-http-digest_auth   require 'net/http/digest_auth'   Net::HTTP::DigestAuth
Run Code Online (Sandbox Code Playgroud)

这是捆绑器的故意行为,由问题1255评论支持

至于命名你的客户,我可能会建议bundle gem foo_api_client除非你的客户是现有foogem 的扩展.虽然在Ruby社区中通常可以接受对宝石的目的或历史的合适双关语.