一度だけ実行したいコードをSinatra(Ruby Web Framework)のどこに配置しますか?
質問
これがルビーの質問なのかシナトラの質問なのかはわかりません。両方とも新しいので。次のコードは機能しません。最初のmy_variableはそのブロックに対してローカルであるため、その理由は理解できます。それを正しくするための構文がわかりません。
require 'rubygems'
require 'sinatra'
configure do
my_variable = "world"
end
get '/' do
"Hello " + my_variable
end
EDIT1-以下は動作しますが、configureブロックの適切な目的について混乱していると思います。
require 'rubygems'
require 'sinatra'
my_variable = "world"
get '/' do
"Hello " + my_variable
end
解決
require 'rubygems'
require 'sinatra'
set :my_variable, "world"
get '/' do
"Hello " + settings.my_variable
end
他のヒント
Configureブロックは、アプリの構成に関連しています。それがそれである場合、適切にカプセル化する必要があります:
require 'sinatra'
configure do
set :my_option, "world"
end
get '/' do
"Hello #{options.my_option}"
end
もう1つの方法:
require 'rubygems'
require 'sinatra'
@my_variable="world"
get '/' do
"Hello " + @my_variable
end
クラス変数を設定します—例えば。 @@ my_variable
— configureブロック内。 configureブロックは、起動時に実行するコード用に存在するため、変数を設定することは理にかなっています。 Sinatraアプリケーションは Sinatra :: Base
のサブクラスであるため、この状況でクラス変数を使用するのが適切と思われます。
所属していません StackOverflow