2016-11-01 5 views
0

저는 Ruby에 익숙하며 리눅스에서 잘 실행되는 프로젝트를 진행하고 있습니다.하지만 Windows 용으로 사용해야합니다. jruby를 사용 중이며 사용자 정의 소스에서 보석을 설치해야합니다. (git 소스의 activerecord-jdbc-adapter 수정). 내가 설치 번들 실행할 때 문제는 제공하고 컴파일 후 나에게이 오류 제공하기 때문에,이 보석을 설치하려고 :번들 설치 Windows Custom 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를 계속할 수 있습니다.

리눅스에서는 home/admin/.... 폴더를 만듭니다.하지만 Windows에서는 C : 으로 시작합니다. 이름이 C :이지만 이름이 C 인 디렉토리를 만들려고한다고 생각합니다. :는 유효하지 않은 문자이기 때문에 디렉토리의 이름으로 허용됩니다. 어쩌면 그 폴더의 생성을 피하는 (또는 그 이름을 변경하는) 방법이 있지만 검색이 있으며이 오류에 대해서는 아무 것도 찾을 수 없습니다.

귀하의 도움에 감사드립니다. 사전에 감사합니다.

+0

': git' 소스에서 AR-JDBC를 사용할 수있는 가능성은별로 테스트되지 않았습니다. 공식적인 축복은 거의 없습니다. javac를 사용해 네이티브 확장 기능을 컴파일하려고합니다. Windows에서 최신 JRuby (9.1.5.0)를 사용하여이 작업을 시도해보고 다른 사용자가 찾을 수있는 경우에 해당 동작을 확인하는 것이 좋습니다. – kares

+0

도움 주셔서 감사합니다! –

답변

0

다른 실마리를 찾는 해결책을 찾았습니다. 어쩌면 그것을 해결하는 올바른 방법이 아니지만 그 보석을 설치 완료 할 수있게했다. 에서는 C : \ jruby9.0.1.1 \ LIB \ 루비 \ 다음 stdlib \ 항아리 \ installer.rb가 나는 방법 do_install의 선 (168) (벤더 write_require_file)에 가서이 변경이

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의 버그를 해결할 수도 있지만 그렇지 않을 수도 있습니다. 그러나 지금은 문제를 해결했습니다. 도와 주셔서 감사합니다!!