1

Ich verwende Ruby on Rails mit Google App Engine, d. H. Dieses Lernprogramm: https://cloud.google.com/ruby/getting-started/hello-world. Ich verwende Google Datastore anstelle einer herkömmlichen Datenbank. Für die Produktion kann ich mich problemlos mit dem Datenspeicher meines Projekts verbinden. Der Entwicklungsmodus mit dem Google Datastore-Emulator ist jedoch ein Problem. Ich konnte den Datastore-Emulator installieren und mithilfe des bereitgestellten Google-Lernprogramms (https://cloud.google.com/datastore/docs/tools/datastore-emulator) einrichten.Kann den Google Datenspeicher-Emulator nicht in Ruby on Rails-Projekt verwenden

Ich führe den Datenspeicheremulator aus, dann führe gcloud beta emulators datastore env-init aus und stelle sicher, dass diese Umgebungsvariablen sich in meiner .bashrc-Datei befinden (und meine .bashrc-Datei ausliefern).

Meine Umgebungsvariablen in etwa so aussehen:

require 'gcloud' 
gcloud = Gcloud.new('my-app') 
dataset = gcloud.datastore 

Daraus ergibt sich der folgende Fehler von der ‚gcloud‘ Juwel:

export DATASTORE_DATASET=my-app 
export DATASTORE_HOST=http://localhost:8473 
export DATASTORE_EMULATOR_HOST=localhost:8473 
export DATASTORE_PROJECT_ID=my-app 

Dann versuche ich, die folgenden aus Rails zu tun:

RuntimeError: Could not load the default credentials. Browse to 
https://developers.google.com/accounts/docs/application-default-credentials 
for more information 

    from /home/sam/.rvm/gems/ruby-2.2.3/gems/googleauth-0.5.1/lib/googleauth.rb:119:in `get_application_default' 
    from /home/sam/.rvm/gems/ruby-2.2.3/gems/gcloud-0.7.2/lib/gcloud/credentials.rb:83:in `default' 
    from /home/sam/.rvm/gems/ruby-2.2.3/gems/gcloud-0.7.2/lib/gcloud/datastore.rb:62:in `datastore' 
    from /home/sam/.rvm/gems/ruby-2.2.3/gems/gcloud-0.7.2/lib/gcloud.rb:106:in `datastore' 
    from (irb):3 
    from /home/sam/.rvm/gems/ruby-2.2.3/gems/railties-4.2.6/lib/rails/commands/console.rb:110:in `start' 
    from /home/sam/.rvm/gems/ruby-2.2.3/gems/railties-4.2.6/lib/rails/commands/console.rb:9:in `start' 
    from /home/sam/.rvm/gems/ruby-2.2.3/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:68:in `console' 
    from /home/sam/.rvm/gems/ruby-2.2.3/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
    from /home/sam/.rvm/gems/ruby-2.2.3/gems/railties-4.2.6/lib/rails/commands.rb:17:in `<top (required)>' 
    from bin/rails:18:in `require' 
    from bin/rails:18:in `<main>' 

Ich war unter dem Eindruck, ich brauchte keine Schlüsseldatei, wenn Sie die Daten verwenden Riss Emulator. Wenn ich eine Schlüsseldatei benötige, wie erstelle ich eine, mit der ich mich mit dem lokalen Datastore-Emulator verbinden kann? Die Dokumentation des Datenspeicheremulators erwähnt die Notwendigkeit dafür überhaupt nicht und scheint vorzuschlagen, dass nur die Umgebungsvariablen ausreichen sollten, damit sich lokale Clients automatisch verbinden können.

Bitte beraten!

Antwort

2

Während ich war nicht in der Lage Rubin zu bekommen, um tatsächlich auf den Datenspeicher-Emulator zu verbinden, eine bessere Lösung scheint hier skizziert werden: https://github.com/GoogleCloudPlatform/gcloud-ruby/issues/610

Update: Emulator-Verbindung nicht funktioniert wurde aufgrund eines einfachen Fehler auf meiner Seite , finden Sie im verknüpften Thread für eine gute Anleitung, wie Sie dies tun