2016-08-04 6 views
0

私は、Mail gemを使ってCLIから電子メールを送信する単純なRubyGem(Railsなし)を作っています。メーラーを設定するには、パスワードを提供する必要があります。パスワードをENV変数などに秘密に保存して、公開しないようにしなければなりません。ruby​​ gemで環境変数を設定する

私はDotenvを使用しようとしましたが、私の新しく作られた宝石をインストールした後、プロジェクトディレクトリから実行しているときにのみ動作することがわかりました。ホームディレクトリからgemを実行しようとすると、ENV変数にアクセスできなくなります。

gemspec spec.filesには、.envファイルを必ず含めてください。

RubyGemに変数を読み込む実際のプロセスを理解しているとは思いません。

答えて

0

呼び出しの時点での正しい動作が現在の作業ディレクトリに依存しているという事実は、これが相対パスの問題であることを示しています。少なくとも一部は機能しているので、gemspecの設定が正しい必要があります。

私は自分でDotenvを使用していませんが、ソースを調べるとenvファイルに明示的なパスを指定するとDotenv.loadになります。

Dotenv.load(File.expand_path("../.env", __FILE__))bin/myappから試してみるか、ディレクトリ構造に合わせて調整してください(envというファイルがGemルートにあると仮定します)。

同様の方法がthis tutorialで議論されています。

0

Dotenvは環境変数をさまざまな実行環境(開発、ステージング、プロダクションなど)に配布するためのツールであり、実際には宝石内での使用を意図していません。これは、プロジェクトディレクトリ内でスクリプトを実行する場合にのみ有効です。なぜなら、これはDotenvが動作するように設計されているからです。

代わりにENVグローバル変数を使用してください(マシンから環境変数をロードするだけです)。.envというファイルをgem内に置くのではなく、自分で環境を設定するように指示してください。そので、他の問題がないと仮定してどこからでもスクリプトを実行できます。

関連する問題