捆绑安装 Windows 自定义 Gem

Bundle install Windows Custom Gem

我是 Ruby 的新手,我正在做一个 运行 在 linux 上表现不错的项目,但我需要为此使用 Windows .我使用的是 jruby,我需要从自定义源安装 gem。 (来自 git 源的 activerecord-jdbc-适配器的修改)。当我 运行 bundle install 并且它尝试安装此 gem 时出现问题,因为在编译后它给我这个错误:

SystemCallError: Unknown error - Unknown Error (20047) -
C:\jruby-9.0.1.0\lib\ruby\gems\shared\bundler\gems\activerecord-rails-adapter-90bbc7afe6eb\C:
An error occurred while installing activerecord-jdbc-adapter (1.4.0.dev), and

Bundler 无法继续。

在 linux 中,它创建文件夹 home/admin/.... 但在 windows 中,它从 C: 我认为它正在尝试创建一个名为 C: 的目录,但不允许将名称 C: 作为目录的名称,因为 : 是无效字符。也许有一种方法可以避免创建(或更改该文件夹的名称)该文件夹,但我进行了搜索,但找不到有关此错误的任何信息。

非常感谢您的帮助。提前谢谢你

我在寻找其他线索的过程中找到了解决方案。也许不是解决它的正确方法,但它让我能够完成安装 Gem。在 C:\jruby9.0.1.1\lib\ruby\stdlib\jars\installer.rb 中,我转到方法 do_install( vendor, write_require_file ) 中的第 168 行并更改为:

def do_install( vendor, write_require_file )
  vendor_dir = File.join( @mvn.basedir, spec.require_path )
  jars_file = File.join( vendor_dir, "#{spec.name}_jars.rb" )

  # write out new jars_file it write_require_file is true or

为此:

def do_install( vendor, write_require_file )
  vendor_dir = File.join( @mvn.basedir, spec.require_path.gsub(':','') )
  jars_file = File.join( vendor_dir, "#{spec.name}_jars.rb" )

  # write out new jars_file it write_require_file is true or

因此它从安装时尝试创建的文件夹中删除了冒号 (:)。这导致捆绑器能够完成安装 gem。也许它是真正的解决方案,它解决了 windows 的 jruby 中的错误,也许不是,但现在我解决了我的问题。感谢您的帮助!!