[英]How to include a .gem file in bundler (not source)
我有一个Rails应用程序,它依赖于同时开发的库。
部署应用程序时,出于各种原因,我没有选择在捆绑程序中使用:git =>''选项来加载gem。 理想情况下,我要执行的操作如下
宝石文件
gem 'system-api', :gem => 'vendor/system-api-1.0.0.gem'
我想预构建gem并将其简单地包含到项目中,然后将其检入git。
有没有办法使用捆绑器甚至不使用捆绑器来做到这一点?
[更新1]
我尝试了“ gem'system-api','1.0.0',:path =>'vendor /'”,捆绑程序说它已正确安装,但是gem没有显示在'gem list'中,rails项目也没有有一个参考。 它与“捆绑包显示”命令一起显示。
我做了以下工作:
gem 'libv8', '3.11.8.3mytest', :path => '../libv8/pkg'
../libv8/pkg
文件夹仅包含二进制打包的宝石libv8-3.11.8.3mytest-x86_64-linux.gem
。
希望这可以帮助。
看来bundler具有:path
选项。 它将相对于项目的Gemfile位置运行。 该路径仅指定文件夹,而不指定实际的gem名称:
gem 'system-api', :path => "vendor"
有关更多信息,请参见捆绑程序的Gemfile文档 。
如果将X.gem文件放入./vendor/cache,则可能会起作用
如果运行“捆绑包”,则捆绑器将在其中放置内置的.gem文件。 因此,如果您自己将其放在此处,捆扎机会在此处找到它吗? 也许。 但是我不确定在./vendor/cache中打包一些宝石,而其他人不打包的想法,也不完全确定Bundler是否支持,因为我认为“捆绑包”坚持将所有em放在其中。
http://gembundler.com/bundle_package.html http://gembundler.com/man/bundle-package.1.html
如果不是将预先构建的X.gem检入到存储库中,而是可以将X gem的源检查到存储库中,并且源文件包含X.gemspec文件,则可以使用:path选项。 但是我认为,您已经发现:path选项希望指向源,而不是* .gem包。 如果仅将* .gem解压缩,则可能会生成一个目录,您可以在其中使用bundler gem:path。 (* .gem产品只是一个zip文件...我想。)
这不是一个确定的答案,但是可能需要探索一些想法。
我会说这是正常的gem list
,不会显示您的宝石。 您是通过捆绑程序安装的,运行gem list
时不会调用捆绑程序。 相反,请检查bundler exec gem list
。
顺便说一句,在使用Bundler时,应始终在运行任何命令行之前使用bundler exec
( rails server
除外,它具有自己的方式来启动和运行Bundler): bundle-exec手册页
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.