ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: 28 Jul 2009, 15:04 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
Aufgrund der hohen Zahl der Leute die auf dieses Problem stoßen werden gönne ich diese Änderung einen eigenen Thread:

Ab Ruby 1.9.2 ist das Arbeitsverzeichnis (".") nicht mehr standardmässig in $LOAD_PATH enthalten, was dazu führt, dass require Dateien im Ausführungsverzeichnis nicht mehr findet.

Mehr dazu hier:

http://www.ruby-mine.de/2009/7/19/require-in-ruby-1-9-2

Gruß,
Skade


Nach oben
 Profil  
 
BeitragVerfasst: 31 Dez 2009, 05:57 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
ruby19 -I. :)

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
BeitragVerfasst: 31 Dez 2009, 11:16 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
Der Tipp steht doch schon in der Ruby-Mine? ;)


Nach oben
 Profil  
 
BeitragVerfasst: 31 Dez 2009, 13:23 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
Vielleicht nochmal überdeutlich, falls jemand zu faul ist, auf den Link zu klicken.

Was für ein Sicherheitsproblem eigentlich? Ich fand das frühere Verhalten sehr komfortabel...

Übrigends steht in NEWS:
Zitat:
* $: no longer includes the current directory, use require_relative

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
BeitragVerfasst: 08 Jun 2010, 07:03 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
Ist zwar schon lange her, bin aber leider erst heute über diesen Thread gestolpert.

murphy hat geschrieben:
Was für ein Sicherheitsproblem eigentlich? Ich fand das frühere Verhalten sehr komfortabel...


Das Problem ist das Gleiche, wie mit dem "." in der Path Variable bei Linux.
Es wird das ausführbare Programm (oder in diesem Fall Package) gestartet,
das als erstes in einem der Pfade gefunden wird.

Nehmen wir mal an im Load-Path oder Path steht "." ganz vorne,
dann wird ein Package/Programm aus dem aktuellen Verzeichnis
1.) benutzt
2.) vor den System-Programmen sogar benutzt

Wenn jetzt z.B. root sich gerade in einem User-Verzeichnis befindet
und dort liegt ein manipulierte Ruby-Package oder Binary, dann
wird dieses benutzt statt dem gewünschten und es würde mit
root-Rechten ausgeführt werden.

_________________
Grüße
Jack


Nach oben
 Profil  
 
BeitragVerfasst: 05 Jul 2010, 20:24 
Offline
Lehrling

Registriert: 25 Mai 2009, 12:48
Beiträge: 91
Wohnort: Berlin
Jetzt gibts für diesen Zwecke require_relative

_________________
fresh / irbtools / ripltools / github / J-_-L


Nach oben
 Profil  
 
BeitragVerfasst: 05 Jul 2010, 21:32 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
require_relative required aber relativ zu File.dirname(__FILE__). Das ist schon noch was anderes.

Gruß,
Skade


Nach oben
 Profil  
 
BeitragVerfasst: 06 Jul 2010, 08:54 
Offline
Lehrling

Registriert: 25 Mai 2009, 12:48
Beiträge: 91
Wohnort: Berlin
Skade hat geschrieben:
require_relative required aber relativ zu File.dirname(__FILE__). Das ist schon noch was anderes.

Gruß,
Skade


jop, stimmt.

_________________
fresh / irbtools / ripltools / github / J-_-L


Nach oben
 Profil  
 
BeitragVerfasst: 06 Jul 2010, 09:43 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
slowjack2k hat geschrieben:
Ist zwar schon lange her, bin aber leider erst heute über diesen Thread gestolpert.

murphy hat geschrieben:
Was für ein Sicherheitsproblem eigentlich? Ich fand das frühere Verhalten sehr komfortabel...


Das Problem ist das Gleiche, wie mit dem "." in der Path Variable bei Linux.
Es wird das ausführbare Programm (oder in diesem Fall Package) gestartet,
das als erstes in einem der Pfade gefunden wird.

Nehmen wir mal an im Load-Path oder Path steht "." ganz vorne,
dann wird ein Package/Programm aus dem aktuellen Verzeichnis
1.) benutzt
2.) vor den System-Programmen sogar benutzt

Wenn jetzt z.B. root sich gerade in einem User-Verzeichnis befindet
und dort liegt ein manipulierte Ruby-Package oder Binary, dann
wird dieses benutzt statt dem gewünschten und es würde mit
root-Rechten ausgeführt werden.


Um das ganze noch etwas gefährlicher zu machen: man nehme ein Skript, das mit erhöhten Rechten läuft (z.B.... ein Webserver). Dann kann der User selbst das laden dieser Datei veranlassen.

Nun reicht das noch nicht ganz für einen Angriff: "." steht meist am Ende des $LOAD_PATH, womit ich sicher sein kann, das Dateien erst aus allen anderen Verzeichnissen geladen werden. Der User kann also nicht einfach eine Datei in seinem Verzeichnis anlegen und damit eine andere "überschreiben".

Allerdings unterstützten inzwischen viele Ruby-Bibliotheken Autoloading von undefinierten Konstanten. Wenn der User also dafür sorgen kann, dass eine Konstante geladen wird, die nirgendswo sonst im $LOAD_PATH eine Entsprechung hat, wird die Datei von seinem Userverzeichnis geladen. Auch das ist noch mittelmässig unwahrscheinlich (aber zu beachten).

Problematisch wird die Sache, wenn man weiss, dass Encoding-Definitionen unter Umständen vom Interpreter selbst lazy nachgeladen werden. Insofern braucht man "nur" dafür zu sorgen, dass der Interpreter ein Encoding läd, das nirgendwo definiert ist, ausser im Userverzeichnis.

Es ist ziemlich durch die Brust ins Auge, aber ein Vektor über den man Schindluder treiben kann. Allerdings wirklich nur in Umgebungen, in denen man erhöhte Rechte hat und das Encoding selbst angeben kann. (übrigens noch ein Grund, $RUBY_OPTS auf "kU" zu stellen, dann geht das nämlich nur, wenn man sowas vorgesehen hat)

Gruß,
Skade


Nach oben
 Profil  
 
BeitragVerfasst: 20 Aug 2011, 03:37 
Offline
Nuby

Registriert: 30 Mai 2010, 14:02
Beiträge: 8
Sorry für die dumme Frage aber ich versuche schon die halbe Nacht herauszufinden, was den nun der beste Weg ist. Hab schon im englischen Forum gelesen und es scheint ja viele verschiedene Möglichkeiten zu geben.

ruby -I.
$LOAD_PATH << "."
require_relative

Funktioniert alles. Was nimmt man den am besten? (sollte natürlich auch funktionieren, wen man das Programm am Ende als Gem baut)


Nach oben
 Profil  
 
BeitragVerfasst: 20 Aug 2011, 12:10 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
thodt hat geschrieben:
ruby -I.
$LOAD_PATH << "."
require_relative
Die ersten beiden Möglichkeiten sind identisch, sie fügen das aktuelle Arbeitsverzeichnis an die Liste der Verzeichnisse an, in denen Ruby bei einem Aufruf von #require nach Dateien sucht. Das geht solange gut, wie du deine Skripte aus demselben Verzeichnis startest, in dem das Skript liegt, aber sobald das nicht mehr der Fall ist (etwa, weil das Programm über die Umgebungsvariable PATH gefunden wird), läufst du damit auf.
Um wirklich relativ zur aktuellen Datei zu requiren, ist in 1.9 #require_relative entworfen worden. Für 1.8 musst du auf dieses Idiom zurückgreifen:


require File.join(File.expand_path(File.dirname(__FILE__)), "datei")
Da ich keinen Wert auf 1.8-Kompatibilität lege, verwende ich eigentlich immer #require_relative.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
BeitragVerfasst: 14 Okt 2011, 14:26 
Offline
Schüler
Benutzeravatar

Registriert: 02 Sep 2011, 04:09
Beiträge: 37
Schön, Skade ... :)

was würde das für Windows bedeuten? Hab nämlich grade Ruby 1.9 auf win 7 eingerichtet und wollte unter easyeclipse testen - findet auch 'require' nicht... Dann liegt das wohl an Ver. 1.9, hm?
Schade, Skade. :D
Wir müssen umdenken ... (Helge-Film: Texas ...) :P

Suag, sig.

Skade hat geschrieben:
Aufgrund der hohen Zahl der Leute die auf dieses Problem stoßen werden gönne ich diese Änderung einen eigenen Thread:

Ab Ruby 1.9.2 ist das Arbeitsverzeichnis (".") nicht mehr standardmässig in $LOAD_PATH enthalten, was dazu führt, dass require Dateien im Ausführungsverzeichnis nicht mehr findet.

Mehr dazu hier:

http://www.ruby-mine.de/2009/7/19/require-in-ruby-1-9-2

Gruß,
Skade

_________________
Wir müssen umdenken ... (Helge-Film - Texas...) :P


Nach oben
 Profil  
 
BeitragVerfasst: 14 Okt 2011, 15:08 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
sig hat geschrieben:
was würde das für Windows bedeuten? Hab nämlich grade Ruby 1.9 auf win 7 eingerichtet und wollte unter easyeclipse testen - findet auch 'require' nicht...
Es bedeutet für Windows genau dasselbe wie für jedes andere System auch. Relativ zu deinem Verzeichnis musst du entweder mit #require_relative arbeiten oder "." deinem $: hinzufügen.

sig hat geschrieben:
Dann liegt das wohl an Ver. 1.9, hm?
Ein für alle mal: Ruby 1.8 ist am Ende! Das ist sogar von offizieller Seite endgültig bestätigt: http://www.ruby-lang.org/de/news/2011/10/11/plne-fr-1-8-7/

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
BeitragVerfasst: 18 Okt 2011, 02:57 
Offline
Schüler
Benutzeravatar

Registriert: 02 Sep 2011, 04:09
Beiträge: 37
Ave Quintus, :)

viel Spaß auf der Studienfahrt - einen McIntyre auf dein Wohl! :D Hoffe, es gibt genügend "gesunde Weibchen im gebärfähigen Alter..." :P (Zitat aus Terminator 3)
Ehm, wie genau müsste ich das dingsbums - äh - #require_relative einbinden bzw. den . ?
Dann könnte ich evtl. den 1.8er - Kurs auch mit dem 1.9er fortsetzen...
Wenn ich mal Zeit hab, werd ich auch mal Arch testen - das neue Ubuntu läuft etwas lahm - zumindest auf der Virtualbox ... kein gnome mehr - muss man evtl. auf kde ausweichen... oder linux mint - ... od. nur für ruby arch einrichten - auch ne gute Idee. Hast mein Interesse geweckt. :wink:
- Ahja, euer rpg-maker braucht ja sicherlich auch eine Startmelodie o.ä. ... habt ihr schon was? Ich bin Musiker... also damit könnt ich sogar als Nuby aushelfen. Evtl. wie Terminator: parra-pamm-paramm ... :lol:
Soundbearbeitung in ruby muss ich allerdings erst lernen...
Aber irgendwann ...

OK, salut,
sig. 8)




Quintus hat geschrieben:
sig hat geschrieben:
was würde das für Windows bedeuten? Hab nämlich grade Ruby 1.9 auf win 7 eingerichtet und wollte unter easyeclipse testen - findet auch 'require' nicht...
Es bedeutet für Windows genau dasselbe wie für jedes andere System auch. Relativ zu deinem Verzeichnis musst du entweder mit #require_relative arbeiten oder "." deinem $: hinzufügen.

sig hat geschrieben:
Dann liegt das wohl an Ver. 1.9, hm?
Ein für alle mal: Ruby 1.8 ist am Ende! Das ist sogar von offizieller Seite endgültig bestätigt: http://www.ruby-lang.org/de/news/2011/10/11/plne-fr-1-8-7/

Vale,
Quintus

_________________
Wir müssen umdenken ... (Helge-Film - Texas...) :P


Nach oben
 Profil  
 
BeitragVerfasst: 22 Okt 2011, 12:27 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
sig hat geschrieben:
Ehm, wie genau müsste ich das dingsbums - äh - #require_relative einbinden bzw. den . ?
Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: