【问题标题】:Bundle install Windows Custom Gem捆绑安装 Windows 自定义 Gem
【发布时间】:2016-11-01 00:18:43
【问题描述】:

我对 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: 不允许作为目录的名称,因为 : 是一个无效字符。也许有一种方法可以避免创建(或更改名称)该文件夹,但我进行了搜索,但我找不到有关此错误的任何信息。

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

【问题讨论】:

  • 使用来自:git 源的 AR-JDBC 的可能性没有经过太多测试 - 在这一点上几乎没有官方祝福。它将尝试使用javac 编译本机扩展。建议您在 Windows 上使用最新的 JRuby (9.1.5.0) 尝试此操作,并确认在这种情况下可能会报告给其他人查找的行为。

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


【解决方案1】:

我找到了寻找其他线索的解决方案。也许不是解决它的正确方法,但它使我能够完成安装该 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。也许这是真正的解决方案,它解决了 jruby for windows 中的一个错误,或者可能不是,但现在我解决了我的问题。感谢您的帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2019-03-08
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多