Ich versuche, das TokBox SDK in Schienen zu laden 3. ich die Bibliothek in meinem/lib Verzeichnis abgelegt haben, so zur Zeit sieht meine Verzeichnisstruktur wie folgt:Rails 3-Bibliothek erst Laden erfordern
/lib
opentok.rb
/OpenTok
Exceptions.rb
OpenTokSDK.rb
Session.rb
Ich bin in application.rb im Verzeichnis/lib mit den folgend alle Dateien geladen:
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
Andere Dateien, ich habe in der/lib sind auto-Laden ganz gut, aber diese Bibliothek nicht geladen, bis ich ein require 'OpenTok'
hinzufügen:
ruby-1.9.2-p0 > OpenTok
NameError: uninitialized constant OpenTok
ruby-1.9.2-p0 > OpenTok::OpenTokSDK
NameError: uninitialized constant OpenTok
ruby-1.9.2-p0 > require 'OpenTok'
=> ["OpenTok"]
ruby-1.9.2-p0 > OpenTok
=> OpenTok
ruby-1.9.2-p0 > OpenTok::OpenTokSDK
=> OpenTok::OpenTokSDK
Wie wird die Bibliothek in Rails 3 korrekt geladen?
Allgemein , Sie möchten 'config.autoload_paths' in Rails verwenden, damit Dateien ordnungsgemäß geladen/entladen werden können. – m33lky
Ich stimme zu, das wäre im Allgemeinen eine bessere Idee, aber es ist nicht immer möglich, zum Beispiel, wenn Sie eine Datei haben, die eine * existierende * Klasse wieder öffnet, anstatt eine * neue * Klasse zu definieren. Irgendwelche Vorschläge für was in diesem Fall zu tun? –
@ m33lky Ich versuche, Klassen in den lib-Ordner und Unterverzeichnisse des lib-Ordners zu laden, aber Schienen mag es nicht. Rails mag Unterordner und automatisches Laden nicht. Ich mag diese Arbeit nicht, weil sie die Klassencache umgeht, aber ich habe keine anderen Optionen. Ich beschuldige Schienen, Schienen zu sein. – Vinnyq12