10

秘密鍵をバージョン管理しないというこの要点は素晴らしいものであり、レールの秘密鍵ベースのバージョン管理をやめるために、これを数回使用しました。

heroku のデバイス secret_key に使用しようとしましたが、無残に失敗しました。dev では問題なく動作しますが、heroku へのプッシュを許可することを拒否しました。(上記の要点と同じ方法で) 作成したデバイス キーが設定されていませんでした。

ハードコーディングされた秘密鍵(gitにチェックイン)で動作しましたが、次を使用した場合は動作しませんでした:

Devise.setup do |config|
  config.secret_key = ENV['DEVISE_SECRET_KEY']
...

(関連する環境変数がそこにあることをトリプルチェックした状態で)

heroku へのプッシュ中にアセットのプリコンパイルに失敗するようです

$  git push heroku master
     ... (bundle stuff here)
       Running: rake assets:precompile
       rake aborted!
       Devise.secret_key was not set. Please add the following to your Devise initializer:
       config.secret_key = '0cfa796871e0...
   /tmp/build_.../vendor/bundle/ruby/1.9.1/gems/devise-3.1.1/lib/devise/rails/routes.rb:446:in `raise_no_secret_key'
   /tmp/build_.../vendor/bundle/ruby/1.9.1/gems/devise-3.1.1/lib/devise/rails/routes.rb:195:in `devise_for'
   /tmp/build_.../config/routes.rb:2:in `block in <top (required)>'
    ...( rest of the long stacktrace with little of interest here)

ルートディレクトリで「devise_for」を実行すると、エラーが発生します。関連する行:

MyApp::Application.routes.draw do
  devise_for :users, :path_names => { :sign_in => 'login', :sign_out => 'logout'}

実際のデバイス gem の関連する行は次のとおりです。

      raise_no_secret_key unless Devise.secret_key

したがって、secret_key が設定されているかどうかを確認しているだけです。

確認のために...herokuの設定を確認しましたが、実際にはその名前で環境に秘密鍵を入れました。

DEVISE_SECRET_KEY:            3f844454bee...(more here)
RAILS_SECRET_KEY_BASE:        04bf569d4e...(more here)

それはアプリではなくレーキタスクにあるためです-それがENVに到達できない理由だと思います???

解決策を探し始める場所についてのアイデアはありますか?

4

3 に答える 3

16

(コンパイル時)前に設定変数を使用したいと考えています(スラッグコンパイル時)。

Heroku Labsをオンにしてみてください: user-env-compile

問題が解決すると思います。

于 2013-11-07T10:11:32.377 に答える
5

コンパイル時に壊れる場合は、user-env-compile を有効heroku labs:enable user-env-compileにして、アプリケーションの起動時にアセットをコンパイルするために環境を利用できるようにする必要があります。

于 2013-11-07T10:11:13.907 に答える