3

Ich verwende Schienen in Docker mit Spring und Guard. Siehe Guardfile:`const_get ': nicht initialisierte Konstante [Klasse] (NameError)` nach dem Speichern in Docker mit Spring

guard 'rspec', cmd: "#{env_vars} spring rspec -color -f doc", :all_on_start => false, :all_after_pass => false do watch(%r{^spec/.+_spec\.rb$}) 

Weird-Problem: Wenn die spring Tag anstelle in dem obigen Befehl, ich erhalte eine Fehlermeldung, wenn ich specs laufen, aber erst, nachdem ich eine Datei in dem Behälter in irgendeiner Weise gespeichert haben. Dies ist der Fehler:

/usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:268:in `const_get': uninitialized constant User (NameError) 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:268:in `block in constantize' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `each' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `inject' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `constantize' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:583:in `get' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:614:in `constantize' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise.rb:301:in `get' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise/mapping.rb:81:in `to' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise/mapping.rb:76:in `modules' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise/mapping.rb:93:in `routes' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise/mapping.rb:160:in `default_used_route' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise/mapping.rb:70:in `initialize' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise.rb:331:in `new' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise.rb:331:in `add_mapping' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise/rails/routes.rb:241:in `block in devise_for' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise/rails/routes.rb:240:in `each' 
    from /usr/local/bundle/gems/devise-4.2.0/lib/devise/rails/routes.rb:240:in `devise_for' 
    from /usr/src/app/config/routes.rb:34:in `block in <top (required)>' 
    from /usr/local/bundle/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:389:in `instance_exec' 
    from /usr/local/bundle/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:389:in `eval_block' 
    from /usr/local/bundle/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:371:in `draw' 
    from /usr/src/app/config/routes.rb:1:in `<top (required)>' 
    from /usr/local/bundle/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `load' 
    from /usr/local/bundle/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `block in load_paths' 
    from /usr/local/bundle/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `each' 
    from /usr/local/bundle/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `load_paths' 
    from /usr/local/bundle/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:16:in `reload!' 
    from /usr/local/bundle/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:26:in `block in updater' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/file_update_checker.rb:77:in `call' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/file_update_checker.rb:77:in `execute' 
    from /usr/local/bundle/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:7:in `execute' 
    from /usr/local/bundle/gems/railties-5.0.1/lib/rails/application/finisher.rb:132:in `block (2 levels) in <module:Finisher>' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:396:in `instance_exec' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:396:in `block in make_lambda' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:169:in `call' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:169:in `block (2 levels) in halting' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:547:in `call' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:547:in `block (2 levels) in default_terminator' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:546:in `catch' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:546:in `block in default_terminator' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:170:in `call' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:170:in `block in halting' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:454:in `call' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:454:in `block in call' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:454:in `each' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:454:in `call' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:101:in `__run_callbacks__' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:750:in `_run_run_callbacks' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:90:in `run_callbacks' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/execution_wrapper.rb:108:in `run!' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/reloader.rb:113:in `run!' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/reloader.rb:48:in `block (2 levels) in reload!' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/reloader.rb:46:in `tap' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/reloader.rb:46:in `block in reload!' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/execution_wrapper.rb:85:in `wrap' 
    from /usr/local/bundle/gems/activesupport-5.0.1/lib/active_support/reloader.rb:45:in `reload!' 
    from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:154:in `serve' 
    from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:131:in `block in run' 
    from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:125:in `loop' 
    from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:125:in `run' 
    from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application/boot.rb:19:in `<top (required)>' 
    from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /usr/local/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from -e:1:in `<main>' 
19:33:45 - ERROR - Failed: "BYEBUG=true spring rspec -color -f doc -r /usr/local/bundle/gems/guard-rspec-4.7.3/lib/guard/rspec_formatter.rb -f Guard::RSpecFormatter --failure-exit-code 2 spec/controllers/api/buyside/ideas_controller_spec.rb" (exit code: 1) 

Wenn ich Daten in einem frischen Behälter laufen, wird dieser Fehler nicht auftreten, bis ich eine Datei im COPY d Code speichern. Nach dem Speichern einer Datei wird der Fehler angezeigt, wenn ich versuche, Spezifikationen auszuführen.

Wenn ich den Guard-Befehl ohne die spring-Tag ausführen, bekomme ich auch nicht den Fehler, aber natürlich habe ich nicht mehr den Vorteil der Feder Vorbelastung so Spezifikationen sind super langsam.

Irgendeine Idee was ist los? Hatte dieses Problem vor einem kürzlich erfolgten Upgrade auf Rails 5 nicht. Gerne posten Sie weitere relevante Informationen.

Vielen Dank im Voraus.

+0

Ich sehe genau den gleichen Fehler. Ich würde hinzufügen, dass ich _am_ in der Lage bin, ** spec ** -Dateien zu speichern/ändern/anzufassen, ohne dass der nächste Lauf von 'spring rspec' fehlschlägt, sondern - wie Sie festgestellt haben - Speichern/Ändern/Berühren einer ** tatsächlichen Codedatei ** (z. B. eine Modellklasse) unterbricht den nächsten Lauf von "Frühling". –

Antwort

0

Dieses Problem wird hier diskutiert: rails/spring#519

Die Abhilfe, wie in dieser Frage angedeutet, ist eifrig Laden zu deaktivieren.

In config/environments/test.rb ändern Sie;

config.eager_load = true 

zu

config.eager_load = false 
Verwandte Themen