Saya mengembangkan aplikasi Rails 4 menggunakan permata Active Admin untuk administrasi back end. Admin aktif pada gilirannya menggunakan Rancangan untuk otentikasi pengguna. Sekarang, ketika saya mencoba menerapkan aplikasi menggunakan capistrano
di server VPS, saya mendapatkan kesalahan di bawah ini:
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '-- secret key --'
Pencarian Google tidak berbuat banyak untuk kesalahan ini. Adakah saran mengapa itu melempar kesalahan? Haruskah saya menambahkan kunci rahasia ke devise
penginisialisasi, karena saya tidak dapat menemukan tempat untuk menyetel kunci konfigurasi seperti itu initializers/devise.rb
?
ruby-on-rails
devise
scarver2
sumber
sumber
secret key
. Juga jika Anda menjalankan penginstalan baru, aplikasi harus mengurusnya. Berkat tiket di github.com/plataformatec/devise/issues/2554, masalah ini telah diselesaikan.Jawaban:
Saya berlari
bundle update
pagi ini dan mulai mendapatkan kesalahan yang sama.Saya menambahkannya sebagai jalur masuk
config/initializers/devise.rb
dan kesalahan telah diperbaiki.Ini tampaknya menjadi komitmen yang memperkenalkannya.
sumber
SECRET_KEY_BASE
variabel lingkungan daripada menyalinnyasecrets.yml
sehingga Anda tidak lupa bahwa "kunci rahasia" Anda tidak cukup rahasia!Apa yang berhasil bagi saya di Rails 4.1 dan Devise 3.2.4 ada di
config/initializers/devise.rb
:sumber
figaro
permata:config.secret_key = Figaro.env.devise_secret_key if Rails.env.production?
Sejak Rancangan 3.2.3 untuk aplikasi Rails 4+, lokasi pengaturan kunci default ke YourAppName :: Application.config.secret_key_base ditemukan di config / initializers / secret_token.rb
sumber
Ini memecahkan masalah saya:
Tambahkan kode di bawah ini ke file config / initializers / devise.rb Anda .
Ganti '- kunci rahasia--' dengan kunci Anda sendiri. Saya merekomendasikan menyimpannya dalam variabel ENV untuk tujuan keamanan.
sumber
ENV["your_particular_secret_key_name"]
. Kemudian, aplikasi Anda mereferensikan kunci Anda secara dinamis. Tapi Anda telah mengabaikan kunci Anda, jadi bagaimana Anda memasukkannya ke lingkungan produksi? Anda mendorongnya langsung dari lingkungan pengembangan lokal Anda ke heroku menggunakan figaro, dan kunci rahasia Anda akan berakhir sebagai variabel lingkungan di herokuSesuai changelog :
Saya pergi ke
config/secrets.yml
dan mengubahproduction
nilainya.Sebelum:
Setelah:
Tentu saja, itu harus disetel ke variabel lingkungan, yang akan saya tetapkan nanti, tetapi ini setidaknya membuatnya berjalan. Saya mendapatkan string saya dengan menggunakan
bundle exec rake secret
.sumber
Mungkinkah, Anda tidak lari
rails g devise:install
?Berjalan
rails generate devise User
tanpa perintah sebelumnya memang menyebabkan masalah ini.sumber
rails g devise user
sebelum saya mencoba membuat tabel pengguna dan bermigrasi. Ini memperbaiki masalah.Dalam
config/initializers/devise.rb
saya menempatkan:Karena jika Anda memasukkan:
Anda akan melihat a
secret_key_base
untuk mode tersebutproduction
.sumber
Saya menyelesaikan masalah penginisialisasi saya dengan pendekatan jelek ini:
di config / initializers / devise.rb Sekarang berfungsi dalam produksi dan juga dalam pengembangan!
sumber
Saya mengkloning repositori saya ke mesin baru dari git. Itu
file ada di daftar .gitignore saya, jadi file itu tidak ada, dan Devise tidak membuat file tersebut.
Saya menambahkan file, lalu menjalankan ulang
dan itu berhasil.
sumber
secrets.yml
ke.gitignore
file saya . Saya tidak memberikannya pembacaan menyeluruh, dan samar-samar terkesan bahwa itu menyertakan lebih dari.gitignore
file Rails yang dihasilkan . : facepalm:Periksa apakah Anda
config\initializers\secret_token.rb
memiliki:Harus:
sumber
Saya memiliki masalah yang sama. Masalahnya disebabkan oleh baris-baris berikut di
routes.rb
:Saya mengomentari mereka dan setelah itu saya menjalankan:
Dan itu telah dievaluasi dengan sempurna. Dan setelah itu saya menghapus tanda komentar.
sumber
rails generate devise:install
sebelum membuat model rancangan pertama saya. Sesuai jawaban ini, beri komentar pada baris devise_for di rute lalu jalankan perintah buat, dan berhasil.devise_for
baris untuk mendapatkan rake db saya: bermigrasi untuk bekerja .. tidak tahu mengapaNah, saya telah mengikuti posting ini dan mencoba hampir semuanya di sini. Saya telah menambahkan kunci ke
devise.rb
. Tapi saya masih mendapatkan kesalahan yang sama.Mungkin jawaban yang bodoh, tetapi yang harus saya lakukan hanyalah mendorong
devise.rb
kunci ke repositori.sumber
Memperbaiki:
Di server produksi:
Kemudian di file tambahkan:
untuk mengatur ini secara permanen, dan sistem luas (semua pengguna, semua proses) tambahkan variabel set
Di
devise.rb
file proyek lokal :Detail teknis:
sumber
Mengalami masalah yang sama dengan Rails 5.2.0 dan Devise 4.4.1
Masukkan perintah berikut ke /config/initializers/devise.rb
sumber
Mencoba untuk memberikan jawaban agak lebih lengkap untuk yang di atas: Seperti disebutkan di permata devise_auth_token ini dokumentasi
Saya memiliki masalah yang sama, dan seperti yang saya bahas di sini, saya membuat penginisialisasi devise, dan menambahkan
config.secret_key = ENV['DEVISE_SECRET_KEY']
baris ke dalamnya.sumber
Saya tidak tahu solusi yang tepat tetapi berhasil. Kamu bisa mencobanya. Saya mengkloning proyek saya dari akun GitLab saya dan ketika saya menjalankan di server lokal saya, saya mengalami pesan kesalahan:
rake aborted! Devise.secret_key was not set. Please add the following to your Devise initializer: config.secret_key = '-- secret key --'
Buka
config/initializers/devise.rb
dan tambahkan baris iniconfig.secret_key = '<%= ENV["SECRET_KEY_BASE"] %>'
Baris kode ini memecahkan masalah saya.
sumber
<%= %>
sebagai interpolasi string. Kunci Anda kemudian benar-benar akan menjadi apa yang telah Anda ketikkan di dalam string literal' what ever the %he!@#$ you type here is your key no matter what characters'