3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

環境変数って引き継いでくれるの(node.js -> ruby)

Posted at

これはなに

本当に初歩的な疑問でnode.jsのchild_processなんかでRubyのプロセスを起動させたいみたいなときにnode.jsのスクリプトで使っていた環境変数はRubyのスクリプトにでも適用されるのかみたいなところを実験してみた。

.env
HOGE=HOGEHOGE
PIYO=PIYOPIYO
app.coffee
require('dotenv').load()
exec = require('child_process')

console.log "--- NODE ---"
console.log "HOGE=#{process.env.HOGE}"
console.log "PIYO=#{process.env.PIYO}"

console.log ""+exec('ruby app.rb')
app.rb
puts "--- RUBY ---"
puts "HOGE=#{ENV['HOGE']}"
puts "PIYO=#{ENV['PIYO']}"

結論

引き継いでくれる

$ coffee app.coffee
--- NODE ---
HOGE=HOGEHOGE
PIYO=PIYOPIYO
-- RUBY ---
HOGE=HOGEHOGE
PIYO=PIYOPIYO

環境変数 - Wikipedia

親プロセスから子プロセスに複製されて継承される。 すなわち、子プロセスで環境を変更しない限り、子プロセスの環境は親プロセスのそれと同一の内容である。 また、子プロセスが自分の環境に対して行った変更は、親プロセスの環境に影響しない。

そりゃそうだみたいな印象で、Rubyでさらにdotenvを噛ませようとしていたがコードの行数が減った。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?