한 번만 실행하고 싶은 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- 다음 작업이지만 구성 블록의 적절한 목적에 대해 혼란스러워한다고 생각합니다.

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

다른 팁

구성 블록은 단지 앱 구성 관련입니다. 그것이 바로 그럴 경우 적절하게 캡슐화해야합니다.

require 'sinatra'

configure do
  set :my_option, "world"
end

get '/' do
  "Hello #{options.my_option}"
end

또 다른 방법은 다음과 같습니다.

require 'rubygems'
require 'sinatra'

@my_variable="world"

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

클래스 변수를 설정합니다. @@my_variable - 구성 블록 내부. 시동시 실행하려는 코드에 대한 구성 블록이 존재하므로 변수를 설정하는 것이 합리적입니다. Sinatra 응용 프로그램은 서브 클래스입니다 Sinatra::Base, 이 상황에서 클래스 변수를 사용하는 것이 적절 해 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top