我有一个rails应用程序依赖于我正在同时开发的库。
部署应用时,我无法使用:git => ''在bundler中选择加载gem的各种原因。理想情况下,我想要做的是以下
的Gemfile
gem 'system-api', :gem => 'vendor/system-api-1.0.0.gem'
我想预先构建gem并将其包含在项目中并将其检入git。
有没有办法用bundler或甚至不使用bundler来做到这一点?
[更新1]
我试过“gem'ystem-api','1.0.0',:path =>'vendor /'”并且捆绑包说它安装正确,但宝石没有显示在'宝石列表'中也没有rails项目是否有引用它。它以'bundle show'命令显示。
答案 0 :(得分:0)
看起来Bundler有一个:path
选项。它将相对于项目的Gemfile位置运行。路径仅指定文件夹,而不是实际的gem名称:
gem 'system-api', :path => "vendor"
有关详细信息,请参阅bundler's Gemfile docs。
答案 1 :(得分:0)
如果将X.gem文件放入./vendor/cache
,它可能会起作用如果您运行“bundle package”,那么bundler将放置内置的.gem文件。所以,如果你自己把它放在那里,捆绑商会在那里找到它吗?也许。但是我不确定在./vendor/cache中包含一些宝石的想法和其他没有,不完全确定Bundler是否支持,因为我认为“捆绑包”坚持将所有的em放在那里。
http://gembundler.com/bundle_package.html http://gembundler.com/man/bundle-package.1.html
如果不是将预先构建的X.gem检入您的仓库,您可以检查X gem的SOURCE到您的仓库中,并且源包含一个X.gemspec文件,然后您可以使用:path选项。但我想你已经发现:path选项希望指向源代码,而不是* .gem包。如果您只是解压缩* .gem,那么可能会生成一个目录,您可以使用bundler gem:path with。 (A * .gem产品只是一个zipfile ......我想。)
不是一个明确的答案,但可能会有一些想法。
答案 2 :(得分:0)
我会说这是正常的gem list
不会显示你的宝石。您通过bundler安装它,并且在运行gem list
时不调用bundler。相反,请查看bundler exec gem list
。
顺便说一句,在使用Bundler时,您应该始终在运行的任何命令行之前使用bundler exec
(rails server
除外,它有自己的方式启动并运行Bundler):{{ 3}}
答案 3 :(得分:0)
我做了以下工作:
gem 'libv8', '3.11.8.3mytest', :path => '../libv8/pkg'
../libv8/pkg
文件夹仅包含二进制打包的gem libv8-3.11.8.3mytest-x86_64-linux.gem
。
希望这有帮助。