göremiyorum:tırmık Kısacası Rails.application.secrets
- o tırmık
config/database.yml
dosyası - sonra
config/secrets.yml
amacı nedir içindeRails.application.secrets
erişimi görünüyor değil mi? Uzun yılında
: Ben config/database.yml
uygun değerleri belirtilen ve bağlantı kullanıcının kök 'olmamalıdır olsa
RAILS_ENV=production rake db:migrate
ben hata Mysql2::Error: Access denied for user 'root'@'localhost' (using password: NO)
olsun çalıştırmak
. Bu, ilgili yapılandırma dosyalarından bir alıntıdır:
# config/database.yml
production:
<<: *default
adapter: mysql2
host: localhost
database: <%= Rails.application.secrets[:database][:name] %>
username: <%= Rails.application.secrets[:database][:username] %>
password: <%= Rails.application.secrets[:database][:password] %>
# config/secrets.yml
production:
secret_key_base: very-long-blah-blah-blah
database:
name: app_db_name
username: app_db_user
password: app_db_password
rake
Rails.application.secrets
erişimi yok gibi görünüyor. göç Koşu açıkça örneğin database.yml
gerekli değerleri koyduğunuzda şu şekilde başarılı olur:
production:
<<: *default
adapter: mysql2
host: localhost
database: <%= Rails.application.secrets[:database][:name] || 'app_db_name' %>
username: <%= Rails.application.secrets[:database][:username] || 'app_db_user' %>
password: <%= Rails.application.secrets[:database][:password] || 'app_db_password' %>
yukarıda Rails.application.secrets[:database][:name]
hiçbir şey giderir kanıtlıyor.
rake
içinde Rails.application.secrets
'a nasıl erişebilirim? Bu doğru çözüm mü?
config/database.yml
'un gizli bölümlerini doldurmak için ENV[VARNAME]
kullanabileceğimi biliyorum. Peki o zaman config/secrets.yml
dosyasının amacı nedir?
Ayrıca, Yolcu kullandım, yani .bashrc
'daki değişkenlerin web sunucusuna erişemeyeceği anlamına gelir (Bu sorunu secret_key_base
ile yapmıştım). Bu nedenle, ortam değişkenini kullanmaktan kaçınmaya çalışıyorum. Sadece tüm sırlarımın sunucunun her yerine yayılmasını istemiyorum. Eğer var gibi
raylar-4.2.2, Ubuntu LTS 14.04
sadece ince olmalıdır. Üretim yapılandırmanız sunucuda neye benziyor? Heroku kullanmadığını biliyorum ama 'heroku config' çalıştırmanın karşılığı nedir? – toddmetheny
Yolcu, ''bashrc' –
@toddmetheny'de ayarlanan ortam değişkenleriyle ilgili bir soruna sahip değil, 'localhost'un bulunmasıyla ilgili sorun nedir? uygulama ve veritabanı, kayıt sunucusunda çalışıyor ve benim anlayışımla, uygulamanın mysql soketini kullanarak 'app_db_user' @ 'localhost' olarak veritabanına bağlanmasına izin veriliyor. –