2013-04-26 3 views
0

J'essaie de déployer une application rails jruby en utilisant la gemme neo4j à Heroku. L'exécution fonctionne localement bien, mais quand je frappe #new (// nouveau) à la fin de Heroku, je reçois:Neo4j ne démarre pas automatiquement après le déploiement à heroku

NoMethodError (undefined method `reference_node' for nil:NilClass): 

Après [quelques recherches] [1], il semblait que mon serveur Neo4j n'a même pas été en cours d'exécution.

donc je devais faire

heroku run rails console 

puis

Neo4j.start 

..dans pour obtenir mon travail d'application. Mais pourquoi Neo4j sait-il juste se réveiller et commencer?

Ceci est mon Gemfile.lock:

GEM 
    remote: https://rubygems.org/ 
    specs: 
    actionmailer (3.2.13) 
     actionpack (= 3.2.13) 
     mail (~> 2.5.3) 
    actionpack (3.2.13) 
     activemodel (= 3.2.13) 
     activesupport (= 3.2.13) 
     builder (~> 3.0.0) 
     erubis (~> 2.7.0) 
     journey (~> 1.0.4) 
     rack (~> 1.4.5) 
     rack-cache (~> 1.2) 
     rack-test (~> 0.6.1) 
     sprockets (~> 2.2.1) 
    activemodel (3.2.13) 
     activesupport (= 3.2.13) 
     builder (~> 3.0.0) 
    activerecord (3.2.13) 
     activemodel (= 3.2.13) 
     activesupport (= 3.2.13) 
     arel (~> 3.0.2) 
     tzinfo (~> 0.3.29) 
    activeresource (3.2.13) 
     activemodel (= 3.2.13) 
     activesupport (= 3.2.13) 
    activesupport (3.2.13) 
     i18n (= 0.6.1) 
     multi_json (~> 1.0) 
    arel (3.0.2) 
    builder (3.0.4) 
    coffee-rails (3.2.2) 
     coffee-script (>= 2.2.0) 
     railties (~> 3.2.0) 
    coffee-script (2.2.0) 
     coffee-script-source 
     execjs 
    coffee-script-source (1.6.2) 
    diff-lcs (1.2.4) 
    erubis (2.7.0) 
    execjs (1.4.0) 
     multi_json (~> 1.0) 
    hike (1.2.2) 
    i18n (0.6.1) 
    journey (1.0.4) 
    jquery-rails (2.2.1) 
     railties (>= 3.0, < 5.0) 
     thor (>= 0.14, < 2.0) 
    json (1.7.7-java) 
    mail (2.5.3) 
     i18n (>= 0.4.0) 
     mime-types (~> 1.16) 
     treetop (~> 1.4.8) 
    mime-types (1.23) 
    multi_json (1.7.2) 
    neo4j (2.2.3-java) 
     activemodel (>= 3.0.0, < 3.3) 
     neo4j-wrapper (= 2.2.3) 
     orm_adapter (>= 0.0.3) 
     railties (>= 3.0.0, < 3.3) 
    neo4j-community (1.8.1-java) 
    neo4j-core (2.2.3-java) 
     neo4j-community (>= 1.8.1, < 1.9) 
     neo4j-cypher (~> 1.0.0) 
    neo4j-cypher (1.0.0) 
    neo4j-wrapper (2.2.3-java) 
     neo4j-core (= 2.2.3) 
    orm_adapter (0.4.0) 
    polyglot (0.3.3) 
    puma (1.6.3-java) 
     rack (~> 1.2) 
    rack (1.4.5) 
    rack-cache (1.2) 
     rack (>= 0.4) 
    rack-ssl (1.3.3) 
     rack 
    rack-test (0.6.2) 
     rack (>= 1.0) 
    rails (3.2.13) 
     actionmailer (= 3.2.13) 
     actionpack (= 3.2.13) 
     activerecord (= 3.2.13) 
     activeresource (= 3.2.13) 
     activesupport (= 3.2.13) 
     bundler (~> 1.0) 
     railties (= 3.2.13) 
    railties (3.2.13) 
     actionpack (= 3.2.13) 
     activesupport (= 3.2.13) 
     rack-ssl (~> 1.3.2) 
     rake (>= 0.8.7) 
     rdoc (~> 3.4) 
     thor (>= 0.14.6, < 2.0) 
    rake (10.0.4) 
    rdoc (3.12.2) 
     json (~> 1.4) 
    rspec-core (2.13.1) 
    rspec-expectations (2.13.0) 
     diff-lcs (>= 1.1.3, < 2.0) 
    rspec-mocks (2.13.1) 
    rspec-rails (2.13.0) 
     actionpack (>= 3.0) 
     activesupport (>= 3.0) 
     railties (>= 3.0) 
     rspec-core (~> 2.13.0) 
     rspec-expectations (~> 2.13.0) 
     rspec-mocks (~> 2.13.0) 
    sass (3.2.8) 
    sass-rails (3.2.6) 
     railties (~> 3.2.0) 
     sass (>= 3.1.10) 
     tilt (~> 1.3) 
    sprockets (2.2.2) 
     hike (~> 1.2) 
     multi_json (~> 1.0) 
     rack (~> 1.0) 
     tilt (~> 1.1, != 1.3.0) 
    therubyrhino (2.0.2) 
     therubyrhino_jar (>= 1.7.3) 
    therubyrhino_jar (1.7.4) 
    thor (0.18.1) 
    tilt (1.3.7) 
    treetop (1.4.12) 
     polyglot 
     polyglot (>= 0.3.1) 
    tzinfo (0.3.37) 
    uglifier (2.0.1) 
     execjs (>= 0.3.0) 
     multi_json (~> 1.0, >= 1.0.2) 

PLATFORMS 
    java 

DEPENDENCIES 
    coffee-rails (~> 3.2.1) 
    jquery-rails 
    neo4j (>= 2.2.3) 
    puma 
    rails (= 3.2.13) 
    rspec-rails 
    sass-rails (~> 3.2.3) 
    therubyrhino 
    uglifier (>= 1.0.3) 

Répondre

3

Ceci est très probablement parce que Neo4j start-up est pas (encore) thread-safe. Neo4j démarrera réellement la première fois que vous frapperez votre application. Toutefois, en fonction du type de requête, vous pouvez rencontrer l'erreur décrite ci-dessus à partir de ce point. Plus précisément, plusieurs demandes à l'application pendant le démarrage de Neo4j entraîneront des erreurs jusqu'à ce que l'application soit redémarrée.

J'ai soumis un correctif pour cela (voir here, here et here) et il a été fusionné. Cependant, il n'a pas encore été inclus dans une version officielle de gemme pour le moment.

Si vous voulez contourner ce problème pour l'instant, vous avez deux options:

-Point à la branche principale Neo4-core

-Auto-démarrage Neo4j au démarrage en utilisant le patch de singe suivant. Cela contourne le problème de sécurité des threads, car Rails n'acceptera aucune requête tant que Neo4j n'aura pas terminé le démarrage. Notez que même avec ces correctifs en place, j'ai toujours eu des problèmes avec le serveur Web puma en lançant d'étranges exceptions. Je recommanderais torquebox-lite pour l'utilisation de production - ce n'est jamais tombé pour moi.

MISE À JOUR: Neo4j.rb v2.2.4 (publié le 19 mai 2013) inclut ce correctif, ce correctif ne sera donc plus nécessaire après la mise à niveau.

Questions connexes