一度だけ実行したいコードをSinatra(Ruby Web Framework)のどこに配置しますか?

StackOverflow https://stackoverflow.com/questions/1812645

  •  06-07-2019
  •  | 
  •  

質問

これがルビーの質問なのかシナトラの質問なのかはわかりません。両方とも新しいので。次のコードは機能しません。最初の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 のサブクラスであるため、この状況でクラス変数を使用するのが適切と思われます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top