Używam Rails 4.2.3 aplikacja działająca w produkcji po wdrożeniu i ze zmiennymi środowiskowymi ustawionymi przez Heroku. Jednak moje środowiska programistyczne i testowe nagle zaczęły nie działać z tym błędem:
DEPRECATION WARNING: You didn"t set `secret_key_base`. Read the upgrade documentation to learn more about this new config option. (called from service at /Users/Benjamin/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138)
Według wszystkiego, co znalazłem na StackOverflow i gdzie indziej, prawdopodobnie ma to coś wspólnego z moim plikiem secrets.yml:
rozwój: secret_key_base: LONG-KEY test: secret_key_base: LONG-KEY
Próbowałem resetowania tych kluczy za pomocą
tajemnica rakebezskutecznie. Mam inne zmienne środowiskowe ustawione w secrets.yml, które są poprawnie ustawione, ale po uruchomieniu Rails.application.secrets.secret_key_base z konsoli wciąż otrzymuję zero.
Każda pomoc byłaby bardzo cenna.
Odpowiedzi:
1 dla odpowiedzi № 1Kiedy mówisz, że próbowałeś je zresetowaćrake secret, co masz na myśli? Skopiowałeś i wkleiłeś klucze z konsoli do secrets.yml w odpowiednie miejsca i zapisałeś? Tak długo, jak oba klawisze są w tym miejscu, mają co najmniej 30 znaków (powinny mieć 128 znaków w twoim przypadku, gdy użyłeś sekretu rake), powinieneś być cały zestaw. Zakładam, że twój plik secrets.yml znajduje się w config /.
Ponadto ostrzeżenie o wycofaniu jest ostrzeżeniem, a nie ostrzeżeniembłąd. Tak długo jak klucze są w secrets.yml, nie powinieneś robić nic innego. Uruchamianie sekretu prowizji i zastępowanie kluczy nowymi jest niepotrzebne, o ile masz tam klucze (co najmniej 30 znaków), nie ma znaczenia, jakie są klucze.
Mam nadzieję że to pomoże. Jeśli nadal masz problemy, opublikuj błąd środowiska wykonawczego i miejmy nadzieję, że pozwoli to lepiej zrozumieć, co jest nie tak.
1 dla odpowiedzi nr 2
To nie jest prawdopodobny problem, ale wydałem godziny w tej sprawie, która również dała mi to samokomunikat o błędzie "secret_key_base" nie został ustawiony dla uruchomienia serwera railsowego. Używam Railsów w wersji. 4.2.5.1, Ruby ver. 2.3.0, WEBrick 1.3.1, z serwerem rozwoju i produkcji działającym eksperymentalnie na systemie Linux CentOS 6.6. Mój błąd to kompletna sprawa dla początkujących ... Podążyłem za krokami, aby skonfigurować SECRET_BASE_KEY do produkcji i używam pliku secrets.yml, przy czym zmienna environment jest używana do ustawienia klucza, jak w przypadku dokumentów Rails i innych raportów Stackoverflow. Ale uruchamiałem mój serwer produkcyjny:
serwer bin / rails --binding = 0.0.0.0 -p 3000 -e = produkcja
co jest złe. Parametr "-e" w postaci krótkiej nie ma znaku równości. Ale otrzymałem błąd, ponieważ kod w pliku secrets.yml szukał czegoś zwanego "= production:", a etykieta to "production:". Prawidłowe wyrażenie uruchamiające serwer w trybie produkcyjnym to oczywiście:
serwer bin / rails --binding = 0.0.0.0 -p 3000 -e production
Inną wskazówką było to, że serwer zgłaszał, że "config.eager_load" został ustawiony na zero, podczas gdy w rzeczywistości został skonfigurowany do ustawienia w pliku ../config/environments/production.rb.
Mam nadzieję, że to pomaga komuś. Jestem kompletnym nowicjuszem w Rails + Ruby, ale w końcu mam serwer testowy działający w trybie produkcyjnym, z różnymi ustawieniami konfiguracji stosowanymi zgodnie z oczekiwaniami.