我有一个定制的 gem,它在捆绑、构建、分发和实施方面一直运行良好。gem 是一个框架的核心,其他 gem 是从这个框架中派生出来的。由于大多数派生的 gem 将具有相同的基本结构,因此我想bin
在 gem 的路径中包含一个 Ruby 脚本,该脚本可用于将文件从template
文件夹复制到用户将开发自己的 gem 的新文件夹中。
我遇到的问题是该template
文件夹有一个 gemspec 文件,该文件以文件$name$.gemspec
中类似命名的类/模块命名(例如:) module $Name$
,其中$name$
被用户提供的名称替换。
不幸的是,当我bundle install
从 gem 的最顶层路径运行时,出现错误:
There was a SyntaxError while evaluating $name$.gemspec:
C:/my_gem/template/$name$.gemspec:8: syntax error, unexpected tGVAR
gem.version = MyGem::$Name$::VERSION
看起来 Bundler 使用了错误的 Gemfile,即使我通过以下方式之一显式传递 Gemfile 或路径:
bundle install --gemfile=Gemfile
bundle install --path=C:\my_gem
我还尝试更新gemspec
我的 Gemfile 行,但无济于事:
gemspec name: 'my_gem'
最后,我确保该template
文件夹甚至不包含在 中my_gem.gemspec
,但这似乎并不重要:
gem.files = Dir.glob("lib/**/*") + %w(LICENSE.txt README.md)
有谁知道为什么 Bundler 试图读取./template/$name$.gemspec
而不是./my_gem.gemspec
?