Ich mache ein Tutorial zur Authentifizierung und kam über die folgende Zeile für gemfile
. Was nützt require
hier?Was bedeutet `require:` in einer Rails-Datei?
gem 'google-api-client', require: 'google/api_client'
I require
in Javascript zu verstehen, aber in Rails dachte ich, die gemfile ist Edelsteine für die Installation, und sobald sie installiert sind, können sie in der Anwendung verwendet werden, und das ist alles, was es dazu ... also bin ich mir nicht sicher, warum ich require
verwenden würde.
Ich bin besonders interessiert, weil nach dem Hinzufügen dieser Zeile und Starten des Servers, lief ich in einen Fehler.
Fehler:
/usr/local/rvm/gems/ruby-2.3.0/gems/bundler-1.11.2/lib/bundler/runtime.rb:77:in `require': cannot load such file -- google/api_client (LoadError)
Vorübergehende Lösung: Ich habe den require:
Teil kommentiert und der Fehler verhindert wird. Aber vielleicht ist das nicht ideal.
Das Verständnis der Verwendung von require
würde sehr hilfreich bei der Fehlersuche helfen.
Ich lese andere Artikel über SO, aber sie diskutieren Besonderheiten wie require => nil
und require => false
, die ich denke, ist ein wenig anders als meine Frage.
- Bunder: What does :require => nil in Gemfile mean?
- Bundler: What does :require => false in a Gemfile mean?
Kann jemand etwas anstacheln teilen?
UPDATE
ich dies später gefunden, die es gut erklärt: When do you need a require in a rails Gemfile?
If you omit the :require option, by default Bundler will attempt to require the gem by using the standard name-to-file conversion rule:
This works well if the gem author has followed the standard conventions. But in some cases, for a variety of reasons, this doesn't happen.
Versuchen Sie, das 'require ..' zu dem entsprechenden Modell hinzuzufügen, in dem Sie den Edelstein verwenden und diesen Teil nicht in die Edelsteindatei aufnehmen. –
Normalerweise bedeutet dieser Fehler, dass es keine 'google/api_client'-Datei im' google-api-client' gem-Bibliotheksordner gibt, überprüfen Sie sie manuell, indem Sie in bash ausgeben: 'file $ (Bundle show google-api-client)/lib/google/api_client' –
Ich kann tatsächlich direkt in 'api_client'-Verzeichnis cd -'/usr/local/rvm/Gems/Ruby-2.3.0/Gems/Google-API-Client-0.9.5/Lib/Google/Api_client " . Könnte es dafür an der falschen Stelle suchen? –