7

これがルビーの質問なのかシナトラの質問なのかわかりません。どちらも初めてなので。最初の my_variable がそのブロックに対してローカルであるため、次のコードは機能しません。その理由は理解できます。私はそれを正しくするための構文を知りません。

require 'rubygems'
require 'sinatra'

configure do
    my_variable = "world"
end

get '/' do
    "Hello " + my_variable
end

EDIT1 - 次のように動作しますが、構成ブロックの適切な目的について混乱していると思います。

require 'rubygems'
require 'sinatra'

my_variable = "world"

get '/' do
    "Hello " + my_variable
end
4

4 に答える 4

7
require 'rubygems'
require 'sinatra'

set :my_variable, "world"

get '/' do
  "Hello " + settings.my_variable
end
于 2009-11-28T14:46:04.397 に答える
3

構成ブロックは、アプリの構成に関連するだけです。それがそれである場合は、適切にカプセル化する必要があります。

require 'sinatra'

configure do
  set :my_option, "world"
end

get '/' do
  "Hello #{options.my_option}"
end
于 2011-09-29T22:55:31.930 に答える
0

もう1つの方法は次のとおりです。

require 'rubygems'
require 'sinatra'

@my_variable="world"

get '/' do
  "Hello " + @my_variable
end
于 2009-12-01T14:29:42.757 に答える
0

クラス変数を設定します。@@my_variable— 構成ブロック内。起動時に実行したいコードのために構成ブロックが存在するため、変数を設定することは理にかなっています。Sinatra アプリケーションは のサブクラスでSinatra::Baseあるため、この状況ではクラス変数を使用するのが適切と思われます。

于 2009-12-29T18:07:04.113 に答える