捆绑安装Windows自定义宝石

时间:2016-11-01 00:18:43

标签: ruby-on-rails windows rubygems bundler jruby

我是Ruby的新手,我正在开发一个在linux上运行良好的项目,但我需要使用Windows。我正在使用jruby,我需要从自定义源安装gem。 (从git源修改activerecord-jdbc-adapter)。当我运行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:不允许作为目录的名称,因为:是一个无效字符。也许有办法避免创建(或更改名称)该文件夹,但我有搜索,我找不到任何有关此错误的信息。

感谢您的帮助。提前谢谢

1 个答案:

答案 0 :(得分:0)

我找到了寻找其他线索的解决方案。也许不是解决它的正确方法,但它使我能够完成安装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

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