2017-08-21 89 views
7

Kiedy próbuję wstępnie skompilować moje zasoby, pojawia się następujący błąd. To jest ślad z pełną mocą:Nie można zduplikować NilClass na prowizji railsowej z aktywami: prekompilacja

RAILS_ENV=production bundle exec rake assets:precompile --trace 
** Invoke assets:precompile (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
rake aborted! 
TypeError: can't dup NilClass 
/var/lib/gems/2.3.0/gems/redis-activesupport-5.0.3/lib/active_support/cache/redis_store.rb:38:in `dup' 
/var/lib/gems/2.3.0/gems/redis-activesupport-5.0.3/lib/active_support/cache/redis_store.rb:38:in `map' 
/var/lib/gems/2.3.0/gems/redis-activesupport-5.0.3/lib/active_support/cache/redis_store.rb:38:in `initialize' 
/var/lib/gems/2.3.0/gems/activesupport-5.0.5/lib/active_support/cache.rb:60:in `new' 
/var/lib/gems/2.3.0/gems/activesupport-5.0.5/lib/active_support/cache.rb:60:in `lookup_store' 
/var/lib/gems/2.3.0/gems/railties-5.0.5/lib/rails/application/bootstrap.rb:64:in `block in <module:Bootstrap>' 
/var/lib/gems/2.3.0/gems/railties-5.0.5/lib/rails/initializable.rb:30:in `instance_exec' 
/var/lib/gems/2.3.0/gems/railties-5.0.5/lib/rails/initializable.rb:30:in `run' 
/var/lib/gems/2.3.0/gems/railties-5.0.5/lib/rails/initializable.rb:55:in `block in run_initializers' 
/usr/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each' 
/usr/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component' 
/usr/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from' 
/usr/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component' 
/usr/lib/ruby/2.3.0/tsort.rb:347:in `each' 
/usr/lib/ruby/2.3.0/tsort.rb:347:in `call' 
/usr/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component' 
/usr/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each' 
/usr/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each' 
/var/lib/gems/2.3.0/gems/railties-5.0.5/lib/rails/initializable.rb:54:in `run_initializers' 
/var/lib/gems/2.3.0/gems/railties-5.0.5/lib/rails/application.rb:352:in `initialize!' 
/home/alex/Dev/livingrecipe/config/environment.rb:5:in `<top (required)>' 
/var/lib/gems/2.3.0/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:293:in `require' 
/var/lib/gems/2.3.0/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:293:in `block in require' 
/var/lib/gems/2.3.0/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:259:in `load_dependency' 
/var/lib/gems/2.3.0/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:293:in `require' 
/var/lib/gems/2.3.0/gems/railties-5.0.5/lib/rails/application.rb:328:in `require_environment!' 
/var/lib/gems/2.3.0/gems/railties-5.0.5/lib/rails/application.rb:448:in `block in run_tasks_blocks' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `each' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain' 
/usr/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke' 
/var/lib/gems/2.3.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/task.rb:62:in `block (2 levels) in define' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `each' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain' 
/usr/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:216:in `block in invoke_prerequisites' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:214:in `each' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:214:in `invoke_prerequisites' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:193:in `block in invoke_with_call_chain' 
/usr/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `each' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:80:in `block in run' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:77:in `run' 
/var/lib/gems/2.3.0/gems/rake-12.0.0/exe/rake:27:in `<top (required)>' 
/usr/local/bin/rake:23:in `load' 
/usr/local/bin/rake:23:in `<main>' 

więc niestety nie mogę dowiedzieć się, gdzie jest błąd, wskazując na to, że żaden z kodem jest moje rzeczy, a przede wszystkim ślad składa się z kodu z domyślnej perełki. Jedyne, co widzę, to to, że dodałem klejnot do bootstrapu, ale to samo dzieje się, nawet jeśli to zrobię.

+0

Mam nadzieję, że dostęp do bazy danych nie jest wymagany? Jeśli tak jest, to nie zadziała. Podczas budowania obrazu DB nie działa wcale. Nie możesz użyć 'DATABASE_URL = postgresql: // user: pass @ 127.0.0.1/dbname'. Jeśli twój kod ignoruje i nie łączy się z DB, to jest to inny problem, ale jeśli tak, to DB nie jest w górze podczas budowania obrazu.Napraw to, że –

+0

dostęp do DB nie jest wymagany, są to tylko fałszywe zmienne, aby uruchomić kod, działało wcześniej, ale po aktualizacji moich klejnotów i projektu to się zepsuło, a kod błędu naprawdę nie pomaga w śledzeniu go – DRing

+0

Zakładam, że używają ['redis-rails'] (https://github.com/redis-store/redis-rails). Czy jesteś pewien, że jest odpowiednio skonfigurowany? Czy możesz wysłać swoją konfigurację/aplikację i odpowiednie inicjatory? – engineersmnky

Odpowiedz

0

więc nie wiem o co chodzi, ale zaktualizowałem ruby, szyny i wszystkie moje klejnoty i to pozbyłem się problemu. Więc myślę, że to był problem kompatybilności z niezgodności wersji gdzieś

0

Wygląda jak masz nieprawidłowe połączenie Redis (lub Setup)

debugować go:

1) Debug Redis w połączeniu z szynami konsoli. Using Redis from your application

>> require 'rubygems' 
=> false 
>> require 'redis' 
=> true 
>> r = Redis.new 
=> #<Redis client v2.2.1 connected to redis://127.0.0.1:6379/0 (Redis v2.3.8)> 
>> r.ping 
=> "PONG" 
>> r.set('foo','bar') 
=> "OK" 
>> r.get('foo') 
=> "bar" 

2) Debug RedisStore

RedisStore.new("localhost:6379/0/cache", expires_in: 90.minutes) 

3) Jeśli komenda minęło, skonfigurować ten config dla swojej aplikacji tak jak to opisano w gem redis-rails

# config/application.rb 
config.cache_store = :redis_store, "redis://localhost:6379/0/cache", { expires_in: 90.minutes } 

4) Play z konfiguracją trochę, aby nawiązać udane połączenie z redis (I nie zapomnij o różnych konfiguracjach środowiska w produkcji !!!)

5) Zatwierdź zmiany, przeprowadź ponowne wdrożenie.

0

Próbujesz skompilować zasoby w środowisku produkcyjnym, ale jesteś także na swoim komputerze. Czy na pewno skonfigurowałeś środowisko produkcyjne we wszystkich swoich plikach konfiguracyjnych? Zajrzyj do config/cable.yml i config/redis.yml, jeśli istnieją.

Alternatywnie, to dobry sposób na kompilacji zasobów w środowisku programistycznym jest:

RAILS_ENV=development bundle exec rake assets:precompile 

Jednak po zrobieniu tego, Szyny będą korzystać z tych zasobów w rozwoju skompilowane zamiast swoich aktywów w app/aktywów. Ostatecznie będziesz także chciał uruchomić RAILS_ENV=development bundle exec rake assets:clobber lub rm -rf public/assets, aby wyczyścić środowisko programistyczne tych skompilowanych zasobów.