Ruby on rails 捆绑程序找不到自定义gem
我有一个作为.gem文件构建的自定义gem,我正试图从我的gem文件中引用它。我已将.gem文件与.gempec一起放在vendor/gems文件夹中。我的文件包含以下行:Ruby on rails 捆绑程序找不到自定义gem,ruby-on-rails,bundler,Ruby On Rails,Bundler,我有一个作为.gem文件构建的自定义gem,我正试图从我的gem文件中引用它。我已将.gem文件与.gempec一起放在vendor/gems文件夹中。我的文件包含以下行: gem 'umlgrader', '1.0.0', :path=>'vendor/gems' 当我运行bundle安装时,它声称已经找到了gem,但它说它正在“使用”gem,而不是“安装”它,即使gem以前没有安装在我的机器上。当我尝试运行我的应用程序时,当它尝试调用gem中的任何方法时,我会得到一个NoMethod
gem 'umlgrader', '1.0.0', :path=>'vendor/gems'
当我运行bundle安装时,它声称已经找到了gem,但它说它正在“使用”gem,而不是“安装”它,即使gem以前没有安装在我的机器上。当我尝试运行我的应用程序时,当它尝试调用gem中的任何方法时,我会得到一个NoMethodError。为什么Bundler不安装gem
我将gem解包到该目录中,然后按如下方式编辑gem文件,从而使其正常工作:
gem 'umlgrader', '1.0.0', :path=>'vendor/gems/umlgrader-1.0.0'
这种解决办法并不可取。我希望能够使用Bundler安装gem,因为我正在尝试将应用程序部署到Heroku。我已经尝试了很多在网上找到的解决方案,但我愿意接受任何建议
编辑:
我已经阅读并尝试过的其他一些页面:
我还注意到很多人建议指向包含gem的Git存储库。如果没有必要,我宁愿不这样做。Bundler文档在这个主题上有点神秘,但这是Bundler的预期行为。要使用
路径
选项,必须在所需位置解包gem
但这对Heroku来说应该没有问题。毕竟,您仍然在使用Bundler,即使gem已经解包。这只是gem安装过程中的一个小步骤…没有Docker
您需要将存储库从github(或其他源)克隆到自定义文件夹。在下面的示例中,重现我如何使用自定义路径编辑单独文件夹中的gem的步骤:
mkdir/bundle/custom\u gems
cd/bundle/custom\u gems
git克隆
。需要克隆,因为如果从计算机中的其他文件夹复制,可能会丢失一些文件gem',路径:'/bundle/custom_gems/'
mkdir/gems
cd/gems
git克隆
。需要克隆,因为如果从计算机中的其他文件夹复制,可能会丢失一些文件gem',路径:'/bundle/custom_gems/'
ADD./app/gems/bundle/custom\u gems
您能添加一些您尝试过的解决方案的链接吗?通过这种方式,我们可以避免推荐相同的东西。我已经阅读了Gemfile中使用:path的很多解决方案,他们都声称它可以正常工作,但显然不行。我也尝试过使用bundle包并将所有gem放在vendor/cache中,它在本地工作,但在我部署到Heroku时不起作用。它起作用了,只是对我们来说意义不大。我们继承了这个项目,它是一个超级怪异的目录结构,其中作为gem一部分的代码位于根级别,web项目位于其中。因此,当我们将存储库作为一个整体来看时,我们将通过在web项目中解包来复制代码。有没有一种方法可以让它在不使用:path的情况下使用.gem文件?当我不使用路径绑定器时,根本找不到宝石。
volumes:
- ./app/gems:/bundle/custom_gems