0

CoffeeScript ファイルが API キー値などの環境変数にアクセスするシナリオがあります。これはローカルでは正常に機能しますが、heroku にプッシュすると機能しません。

ファイルの名前は myfile.js.coffee.erb のようになります

私はこのように値を設定しています

api_key = '<%= ENV['SERVICE_API_KEY'] %>'

値がherokuに設定されていることはわかっており、スペルなどをトリプルチェックしました。結果のJavaScriptファイルは次のようになっているため、処理中であることがわかります

var api_key;
api_key = "";

環境変数にアクセスするように指示できるアセットをプリコンパイルするときに何かする必要がありますか? 私は、CoffeeScript と Rails アセット パイプラインの初心者であることを認めます。これを行う別のより受け入れられた方法はありますか?明らかな理由から、ファイルに埋め込みたくありません。

4

2 に答える 2

4

したがって、API キーは、それが javascript ファイルにあるか html ファイルにあるかに関係なく、関心のある人に表示されるため、リクエストごとに新しい .js ファイルを生成したくないため、私が見つけた最も簡単な解決策は同じ問題は、キーをlayout.html.erbファイルに入れることです。

スクリプトタグにスローしたり、データ属性を使用したり、ボートを浮かせたりすることができますが、それは機能し、動的変数の利点が得られ、レンダリングするファイルが1つ少なくなります。

そして、あなたはまだ使用することができます<%= ENV['api_key'] %>. js (またはコーヒー) で変数をフェッチする必要がありますが、それは非常に簡単です。

于 2012-07-28T05:15:12.203 に答える
2

これを試して

heroku labs:enable user_env_compile -a myapp

その後、再度デプロイします

私たちのために働いた!

この男のすべてのクレジット: Heroku は常に assets:precompile を Rails 3.2 の本番環境で実行します

于 2012-08-24T11:21:14.980 に答える