2009-11-28 21 views
7

Bunun bir yakut sorusu mu yoksa Sinatra sorusu mu olduğunu bilmiyorum, çünkü ikisinde de yeniyim. Aşağıdaki kod çalışmıyor ve neden anladım, çünkü ilk my_variable kendi bloğu için yereldir. Ben sadece doğru almak için sözdizimi bilmiyorum.Sadece bir kez yürütmek istediğim Sinatra (ruby web framework) kodunu nereye koyarım?

require 'rubygems' 
require 'sinatra' 

configure do 
    my_variable = "world" 
end 

get '/' do 
    "Hello " + my_variable 
end 

EDIT1 - aşağıdaki işler çalışır, ancak sonra yapıtaşının uygun amacı konusunda kafam karışmış olur.

require 'rubygems' 
require 'sinatra' 

my_variable = "world" 

get '/' do 
    "Hello " + my_variable 
end 

cevap

7
require 'rubygems' 
require 'sinatra' 

set :my_variable, "world" 

get '/' do 
    "Hello " + settings.my_variable 
end 
+1

, bir bloğun dışında bir şey yapıyor karşısında Sinatra yapılandırma bloğunun amacı hakkında karıştı. –

+2

Seçenekler, uygulama düzeyi ayarlarıdır; yapılandırma yapılandırmayı mevcut ortama göre özelleştirmenize izin verir. –

+0

configure, bir kez çalıştırılacak olan bir kod bloğudur. –

0

Bir başka yoludur:

require 'rubygems' 
require 'sinatra' 

@my_variable="world" 

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

Örnek değişkeninin kullanılmasını önermiyorum çünkü örnek değişkeninin hangi nesneyi etkilediği net değil. –

0

Bir sınıf değişkeni ayarlarsınız - örn. @@my_variable - Yapılandırma bloğunun içinde. Yapılandırma bloğu, başlangıçta çalıştırmak istediğiniz kod için mevcut olduğundan değişkeninizi ayarlamak mantıklıdır. Sinatra uygulamanızın bir Sinatra::Base alt sınıfı olduğu için, bu durumda bir sınıf değişkeninin kullanılması uygun görünmektedir.

3

Yapılandırma bloğu, yalnızca ilgili uygulama yapılandırması içindir. o kadar buysa, bunu uygun kapsüllemek olmalıdır:

sanırım
require 'sinatra' 

configure do 
    set :my_option, "world" 
end 

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

Güzel, ama artık 'seçenekler' değil, 'ayarları'. – pje

İlgili konular