Visa ett inlägg
Oläst 2013-07-05, 03:47 #5
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Nu tror jag att jag hittat en viktig orsak till problemet med require.

Jag misstänkte att det kunde ha med sökvägar till filerna att göra så jag grottade ner mig i filstrukturen.

Jag har nu installerat Ruby i katalogen "C:\Projects\Ruby200"

Det visar sig att modulerna som följer med Ruby från start ligger i katalogen:

Kod:
C:\\Projects\\Ruby200\\lib\\ruby\\2.0.0\\
Men gem paketen hamnar i en helt annan filstruktur, som exempelvis "csvkit"

Kod:
C:\Projects\Ruby200\lib\ruby\gems\2.0.0\gems\csvkit-0.1.3\lib\csvkit.rb"
Kod:
require("open3")  # funkar för open3 ingår från början i Ruby
Men för att kunna nå csvkit så måste man specificera så här i require()

Kod:
require("C:\\Projects\\Ruby200\\lib\\ruby\\gems\\2.0.0\\gems\\csvkit-0.1.3\\lib\\csvkit")
Ja, man måste tydligen använda dubbelbackslash "\\" när man vill ha en backslash för det följer standarden för detta från C/C++ världen.

Nu får jag inget körfel när jag specar sökvägen hela vägen ner till csvkit.rb som modulens laddfil heter.

Nu har jag i alla fall förstått vad felet beror på i grunden. Nu är nästa steg att ta reda på hur man kan lösa problemet.

Jag läste även att Ryby-projektet sedan version 1.9.2 har gjort en break på bakåtkompatibiliteten för sökvägarna. Så exempelvis current directory (".\") inte längre ingår i sökpathen.

Det borde finnas en inställning jag kan ändra för att detta ska fungera globalt, för mig, men har inte hittat den ännu.

Men om jag förstår det rätt så ligger alla extra installerade gems flera nivåer djupare i filstrukturen och man måste veta exakt version och så för att det ska gå att inkludera i källkoden.

Jag har inte hittat någon dokumentation på detta ännu, men det borde rimligen finnas någonstans.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat