2016-11-01 1 views
0

Je ne suis pas familier avec Ruby et je travaille sur un projet qui fonctionne bien sur Linux, mais j'ai besoin d'utiliser Windows pour cela. J'utilise jruby et j'ai besoin d'installer une gemme à partir d'une source personnalisée. (Une modification de activerecord-jdbc-adaptateur à partir d'une source git). Le problème vient quand je lance l'installation bundle et il tente d'installer ce petit bijou, car après il compile me donne cette erreur:Installation de l'installation 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 ne peut pas continuer.

Dans Linux, il crée le dossier home/admin/.... mais dans windows il commence sur C: Je pense qu'il essaie de créer un répertoire avec le nom C: mais le nom C: n'est pas autorisé comme nom pour un répertoire, car: est un caractère invalide. Peut-être qu'il existe un moyen d'éviter la création de (ou changer le nom de) ce dossier, mais j'ai une recherche et je ne trouve rien à propos de cette erreur.

J'apprécierai votre aide. Merci d'avance

+0

La possibilité d'utiliser AR-JDBC à partir d'une source ': git' n'est pas très testée - à peu près aucune bénédiction officielle à ce stade. il tentera de compiler l'extension native en utilisant 'javac'. recommandez-vous d'essayer ceci en utilisant JRuby (9.1.5.0) sous Windows et confirmez le comportement dans ce cas, il peut être signalé à d'autres utilisateurs. – kares

+0

Merci pour votre aide! –

Répondre

0

Je trouve une solution en recherchant d'autres indices. Peut-être que ce n'est pas la bonne façon de le résoudre, mais cela m'a permis de terminer l'installation de ce Gem. Dans C: \ jruby9.0.1.1 \ lib \ Ruby \ stdlib \ pots \ installer.rb, je suis allé à la ligne 168 dans la méthode do_install (fournisseur, write_require_file) et a changé ceci:

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 

A cette :

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 

il enlève deux points (:) à partir du dossier, il est tryng de créer à l'installation. Cela a permis au bundler de pouvoir terminer l'installation de la gemme. Peut-être que c'est la vraie solution et cela résout un bug dans jruby pour Windows, ou peut-être pas, mais pour l'instant j'ai résolu mon problème. Merci pour l'aide!!