3

假设有 Foo 服务并且它有 RESTful API。如果我想为它创建包装器库:

bundle gem foo-api-client

然后它创建以下结构:

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

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

这有一些命名约定吗?

4

1 回答 1

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

对问题 1255 的评论支持这是 bundler 的故意行为

至于命名您的客户,我可能会建议bundle gem foo_api_client,除非您的客户是现有foogem 的扩展。尽管在 Ruby 社区中通常可以接受对 gem 的目的或历史进行适当的双关语。

于 2013-10-31T12:33:43.147 回答