2018年1月20日土曜日

Sinatra で @env に instance_variable_set してはいけない

概要

タイトルの通りです
Sinatra::Base ですでに使われているインスタンス変数になるので、これに instance_variable_set を実行しようとするとエラーとなります

環境

  • macOS 10.13.2
  • Ruby 2.4.1p111
  • Sinatra 2.0.0

現象

  • vim app.rb
require 'sinatra'

get '/' do
  val = '@env'
  instance_variable_set("#{val}", [])
end

これでアプリを起動して localhost:4567 にアクセスすると TypeError: no implicit conversion of String into Integer エラーが発生します

対応方法

val = '@env2' などとして別の変数名を使うようにしましょう

最後に

すごいハマリました、、、

0 件のコメント:

コメントを投稿