はじめに
こんにちは、HappyManaです。
RailsのCORS設定で、オリジンを複数指定したいことがあり、環境変数に配列を使いました。
その際の注意点を備忘録として残します。
環境変数に配列を使う
環境変数で配列を使う際は、以下のように書きます。
CLIENT_ORIGIN=["http://localhost:8000","https://example.jp"]
CORSのoriginsには以下のように書きます。
origins JSON.parse(ENV['CLIENT_ORIGIN'] { '[]' })
注意点
シングルクォーテーションで囲わない
例として、以下のようにシングルクォーテーショを使った配列にします。
CLIENT_ORIGIN=['http://localhost:8000','https://example.jp']
そうすると、以下のエラーが出ます。
/usr/local/lib/ruby/3.1.0/json/common.rb:216:in `parse': 451: unexpected token at ''http://localhost:8000','https://example.jp']' (JSON::ParserError)
これは、JSON.parseを使った時に、ダブルクォーテーションで囲われていないためにでるエラーです。
そもそもJSONの構文では、ダブルクォーテーションで要素が囲われている必要があります。
https://www.json.org/json-ja.html
JSONの構文としてシングルクォーテーションで囲うとエラーがでるため、ダブルクォーテーションで囲う必要があります。