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!