Gần đây tôi đã lấy một trong các repos của tôi từ Git. Sau khi khởi chạy máy chủ, tôi nhận được thông tin sau: Thiếu secret_token và secret_key_base. Điều này có thể xảy ra vì tôi đã bao gồm các secret.yml trong .gitignore của tôi.Thiếu `secret_token` và` secret_key_base` - Rails 4.2.0 với RVM
thiết lập hiện tại của tôi
- Ubuntu 14.04
- ruby 2.2.0p0
- ray 4.2.0
- RVM 1.26.11
- máy chủ địa phương (không xa) môi trường
- phát triển
Nhiều tài nguyên trực tuyến nói rằng tôi phải tạo ra một khóa mới bằng cách sử dụng rake secret
và thêm nó vào secrets.yml. Đặt khóa bên trong secret.yml và khởi động lại máy chủ rails không hoạt động.
được sửa đổi: Thêm nội dung của secrets.yml dưới đây. -04/30/15 09:04 EST
development:
secret_key_base: LONG KEY HERE
test:
secret_key_base: LONG KEY HERE
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
hãy biết điều này được thiết lập như một môi trường phát triển trên một máy chủ địa phương ở nơi tôi cư trú (không Heroku).
Trạng thái tài nguyên khác Tôi cần thêm mục nhập bên trong secret_token.rb
nhưng tệp này không tồn tại trong dự án của tôi.
Cách duy nhất ứng dụng của tôi sẽ chạy là nếu tôi là để tạo ra một tập tin secret_token.rb
và thêm hoặc là một trong những cách sau bên trong của nó:
MyApp::Application.config.secret_token = if Rails.env.development? or Rails.env.test?
('x' * 30) # meets minimum requirement of 30 chars long
else
ENV['SECRET_TOKEN-']
end
hoặc
MyApp::Application.config.secret_token = 'the secret key'
Tại sao là tập tin này được yêu cầu khi tài liệu Rails nói rõ loại bỏ nó?
Các secret_token.rb không được yêu cầu để chạy cho các dự án tạo mới, chỉ có những người từ repo Git của tôi.
Vui lòng thông báo lý do tại sao ứng dụng của tôi cần secret_token.rb mặc dù trạng thái tài liệu của Rails nếu không hoặc ứng dụng của tôi sẽ không chạy mà không có nó.
được sửa đổi: -04/30/15 09:27 EST
Một hành vi lạ là tôi có thể đổi tên secrets.yml
trong khi secret_token.rb
vẫn tại chỗ và các ứng dụng sẽ vẫn chạy.
Tôi đã cố gắng đổi tên secret_token.rb
, thêm <%= ENV["SECRET_KEY_BASE"] %>
để phát triển và tôi vẫn gặp phải vấn đề về secret_token bị thiếu.
Đã chỉnh sửa: Đã thêm git repo bên dưới. -05/08/15 02:50 EST
git repo: https://github.com/captain-awesome/blog_mac
Vài điều kỳ lạ là nếu tôi được sửa đổi bất kỳ một trong những 32 ký tự, lưu secret_token.rb, tải lại các máy chủ ... ứng dụng của tôi sẽ chạy. Có phải chuỗi ký tự 32 trong secret_token.rb mà tôi có thể tự tạo ra không? Nếu vậy, mục đích thực sự của cào mật là gì?
Vì vậy, trước hết, '('x' * 30)', không không không. Bạn có thể tạo một mã thông báo bí mật bằng cách chạy 'rake secret' trong ứng dụng của mình, đó là cách đúng để tạo mã thông báo bí mật. Nhưng điều này không trả lời phần lớn câu hỏi của bạn, vì vậy tôi sẽ để nó như một bình luận ở đây. Bạn cũng có thể muốn tra cứu mục đích của mã thông báo bí mật, vì vậy bạn hiểu những gì đang diễn ra. – jrochkind