2016-11-17 2 views
0

Ich habe eine Reihe von Dateien, die im Verzeichnis Lib einer Ruby on Rails-Anwendung sind.erfordern Bindata in Ruby auf Schienen Anwendung

Ich habe ein Modell, das diese Dateien verwenden muss. In meinem Modell habe ich folgende:

require_relative '../../some_path_to_file_without_extention' 

(Randbemerkung, ich würde gerne eine Möglichkeit zu wissen, alle Dateien zu benötigen, statt require_relative für jede Datei).

Die Datei, die ich release_relative benötige, enthält die folgenden Anforderungen.

require "bindata" 

Wenn ich versuche, Funktionen aus der require_relative Datei zuzugreifen ich die folgende Fehlermeldung erhalten:

LoadError: cannot load such file -- bindata 

Dieses für andere Edelsteine ​​geschieht, die auch in dem Satz von Dateien benötigt werden. Ich habe als Beispiel bindata gewählt.

Ich habe bindata in meinem Gemfile. Wenn ich bundle show bindata starte zeigt es mir den Pfad zu bindata.

Ich habe sogar require 'bindata' in meinem Modell, aber es gab mir den gleichen Ladefehler.

Wie kann ich die LoadError stoppen?

Jede Hilfe würde sehr geschätzt werden.

aktualisieren 1

Als ich bundle show laufen. Ich erhalte die folgende:

Gems included by the bundle: 
    ... 
    * bcrypt (3.1.11) 
    * bindata (2.3.4) 
    ... 

dann in der Konsole erfordert bcrypt funktioniert, aber BinData nicht.

irb(main):002:0> require 'bcrypt' 
=> true 

Aber Bindata nicht.

irb(main):003:0> require 'bindata' 
LoadError: cannot load such file -- bindata 

Update 2

Ok, damit ich weiß, hat etwas mit sein, ist, wie ich meine Schienen-Umgebung bin Laden.

bundle exec irb 
irb(main):001:0> require 'bindata' 
=> true 

Update 3

Also ging ich wieder ein paar git verpflichtet und immer wieder versuchen, die Edelsteine ​​zu addieren und sehen, ob sie in meinen Schienen Konsole laden würden. Ich ging weit genug zurück, wenn es so wäre. Ich wusste nicht, was anders war. Allerdings bemerkte ich auch, als mein Spring-Server neu gestartet wurde, dass meine Edelsteine ​​in meine Rails-Konsole geladen wurden.

Antwort

0

Um alle Dateien im Ordner lib zu benötigen, fügen config.autoload_paths << Rails.root.join('lib') zu Ihrem application.rb, kann diese Antwort Ihnen helfen: Jetzt https://stackoverflow.com/a/19650564/3739191

,

require 'bindata' 

funktionieren sollte :)

+0

Ich bin ziemlich sicher, dass es funktionieren sollte, aber aus irgendeinem Grund (wahrscheinlich etwas, das ich immer noch falsch mache) funktionierte es nicht für mich. Ich habe mehr Informationen zu meiner Frage hinzugefügt. – user2517182