2017-11-01 2 views
0

を設定していない:プリコンパイルし、私はこのメッセージを得る:カピストラーノDevise.secret_keyが

01:08 deploy:assets:precompile 
     01 ~/.rvm/bin/rvm default do bundle exec rake assets:precompile 
     01 rake aborted! 
     01 Devise.secret_key was not set. Please add the following to your Devise initializer: 
     01 
     01 config.secret_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
     01 
     01 Please ensure you restarted your application after installing Devise or setting the key. 

を私はdevise.rbに私の秘密キーを追加する必要はありませんので、私はバージョン管理でそれを望んでいない。私はsecret_key_baseの環境変数を使用しています。これはDevise.secret_keyが後退することになっています。実際、サーバにsshをインストールすると、手動で障害が発生したリリースに移動し、レールコンソールに入ると、Devise.secret_keyが問題なく動作します。 Capistranoの展開中はうまく動作しない唯一の時間だと思われます。

編集:私は手動でbundle exec rake assets:precompileをSSHでうまく実行することもできます。問題はちょうどカピストラーノのようですが、私の環境変数は/ etc/environmentにあり、ロードする必要があります。

答えて

0

理由

カピストラーノは、あなたの環境変数をロードしないnon-loginnon-interactiveシェルモードを使用します。サーバーにsshを行うと は、それはあなたの環境変数

ソリューション

使用環境変数を設定する別の方法をロードする、logininteractiveシェルモードを使用しています。私はしばしばFigaroを使い、それはカピストラーノと共に働きます。機密情報を防ぐために

はGitリポジトリに含まれている、カピストラーノのlinked_filesconfig/application.ymlを追加し、<shared directory>/config/application.ymlに正しい機密情報を記入し、サーバ

0

上のあなたのカピストラーノ生産ファイルにENV変数を宣言する必要があります。 コンピュータ(またはデプロイメントが呼び出されているコンピュータまたは仮想マシン)でenv変数を設定し、カピストラノープロダクションファイルに次のコードを追加します。

設定に/あなたは常にカピストラーノを使用した場合、時にはあなたはカピストラーノは設定している途中に依存するので、サーバー上のenv変数はしません。このようENV変数を設定する必要があり

set :default_env, { 
    "SECRET_KEY_BASE" => ENV['PRODUCTION_SECRET_KEY'], 
.... 
} 

production.rb /展開別のユーザーを使用して展開することも、rbenvまたはrvmを使用することもできます。理由が何であれ、これはcapistranoを使用するときにenv変数を設定する最善の方法です。また、サーバー上で設定したり、バージョン管理を続ける必要はありません。

関連する問題