環境変数をbashrcからEmber CLIに渡す方法。 api-keysをEmber CLIに渡します。
Node.jsを使用してみましたprocess.env
両方のbrocfile.js
およびenvironment.js
、しかしEmber JSコントローラーでアクセスしようとすると、プロパティはnullです。
私のenvironment.js
追加したファイル、
APP: { apiKey: process.env.KEY }
My Ember JSコントローラーで私はそれにアクセスしようとしました:
import config from '../config/environment';
そして、以下に示すように、コントローラプロパティlkey
を設定しましたが、動作しませんでした:
lkey: config.App.KEY
次に私のbrocfile.js
、 追加した:
var limaKey = process.env.Key;
var app = new EmberApp({key: limaKey});
これはまだ機能しませんでした。
私はついにこの問題を解決しました。私は2つの選択肢に直面しました。オプション1は、XHRを使用して、サーバー上のエンドポイントからAPIキーを取得することでした。オプション2は、Nodejs process.envを使用して環境変数から直接APIキーを取得します。オプション2のほうが、XHRリクエストを行う手間が省けるためです。
Nodejs Dotenvプロジェクトに依存するこのember-cli-addOnを使用してオプション2を取得できます
私の場合、アドオンなしで実行することにしました。
.bashrc
にAPIキーを追加します。export API_KEY=NwPyhL5
.bashrc
ファイルをリロードして、設定が取得されるようにします。source ~/.bashrc
config/environment.js
のENV
オブジェクトにプロパティを追加します。デフォルトは次のようになりますmodule.exports = function(environment) {
var ENV = {
modulePrefix: 'Rails-em-cli',
environment: environment,
baseURL: '/',
locationType: 'auto',
EmberENV: {
}
}
ENV
オブジェクトに、次のように新しいプロパティmyApiKeyを追加できます。
module.exports = function(environment) {
var ENV = {
modulePrefix: 'Rails-em-cli',
environment: environment,
baseURL: '/',
locationType: 'auto',
myApikey: null,
EmberENV: {
}
//assign a value to the myApiKey
if (environment === 'development') {
// ENV.APP.LOG_RESOLVER = true;
ENV.myApiKey = process.env.API_KEY;
}
}
process.env.API_KEYは.bashrc
に追加した設定を取得し、に割り当てていることに注意してください。 myApiKey。 process.envを機能させるには、サーバーにNodejsをインストールする必要があります。
最後に、コントローラーでその変数にアクセスするには
import config from '../config/environment';
import Ember from 'ember';
export default Ember.Controller.extend({
yourKey: config.myApikey,
});
それでおしまい。
ENV.APP
オブジェクトに変数を設定することもできます。変数はアプリケーションインスタンスによって実行されます。
その後、それらを初期化子などで再利用できます。
この方法では、config/environment
をアプリケーションのコードにインポートする必要はありませんが、これは少し奇妙に思えます。
APIキーがチェックインされないようにします。ビルドプロセスの一部として、ローカル構成ファイルをconfig
ディレクトリにコピーし、environment.js
にロードします。
environment.js
try {
var local = require('./local_environment');
Object.keys(local.config).forEach(function(key) {
ENV[key] = local.config[key];
});
} catch(err) {
console.log("config/local_environment.js not found");
}
local_environment.js
(チェックインされず、ビルドプロセスによってコピーされます)
exports.config = {
SOME_API_KEY: 'key_here'
};
重要なことは、config/environment.js
でENV変数を定義することです。どこか(アダプター、コントローラーなど)にアクセスする必要がある場合は、最初にconfig/environment.js
をインポートします。
Ember CLIアプリ、 https://ember-cli.com/user-guide/#Environments については、参考のためにこれを文書化しています。
サンプルロジック:
# app/controllers/foobar.js
import DS from 'ember-data';
import ENV from 'nameOfApp/config/environment';
export default Ember.Controller.extend({
actions: {
click: function() {
console.log(ENV.SOME_ENVIRONMENT_KEY);
}
}
});
# config/environment.js
module.exports = function(environment) {
....
if (environment === 'development') {
ENV.SOME_ENVIRONMENT_KEY = 'asdf1234';
}
...
};