我正在尝试部署一个用 Ruby 编写的小型命令行应用程序。应用程序所依赖的许多 gem 都托管在我的 github 帐户上。我已经在Gemfile
适当的地方指定了它们的位置。当我在部署机器上克隆存储库并bundle install
从根目录运行时,一切顺利。然后我可以使用bin/hippo
. 我想将应用程序安装到系统中,这样我就不需要修补$PATH
或指定可执行文件的路径来使用它。
当我运行时gem install /path/to/my/.gem/file
,安装失败并说它无法解析对托管在我的 Github 帐户上的个人 gem 的依赖关系。我认为这是因为该gem install
命令没有读取Gemfile
,只有gemspec
(为什么捆绑器的人将他们的文件命名Gemfile
而不是BundleFile
什么?),并且 gem 的位置在中指定Gemfile
(没有办法指向gemspec 中的 github gem,对吗?)。当我使用rake install
捆绑脚手架 gem 附带的任务时,我遇到了同样的问题。但是,当我跑步时bundle exec gem install /path/to/my/gemfile
然后它安装好了,我猜是因为它在捆绑器更改的加载路径上看到了我的 gem,并确定它们已经安装。但是,当我尝试运行可执行文件时,它失败了,因为它在需要时找不到依赖项。(请注意,可执行文件require bundler/setup
在 shebang 之后的第一行)。
所以我问:使用 bundler 部署依赖于非 rubygems 托管 gem 的命令行应用程序的好方法是什么?