2016-04-08 15 views
1

Sinatra uygulamasında tanımlanan özel ayarlara bir hizmetten erişmeye çalışıyorum ancak bunu yapamıyorum.Sinatra özel ayarlarına Hizmet'ten erişme

application.rb

require 'sinatra' 
require 'sinatra/config_file' 

class Application < Sinatra::Base 
    register Sinatra::ConfigFile 
    config_file 'environment/config.yml' 

    set :custom_setting_one, 'some_value' 
    ... 
    ... 
end 

config.yml

custom_setting_two: some_other_value 

my_service.rb

require 'sinatra' 

Class MyService 
    def do_something 
    Sinatra::Application.settings.custom_setting_one # This throws exception 
    Sinatra::Application.settings.custom_setting_two # This throws exception 
    end 
end 

istisna: application.rb dosyada

undefined method `custom_setting_one' for Sinatra::Application:Class 

Ben hizmetinden yapılandırma değişkenlerin ya erişemez ama elimden.

Herhangi bir yardım gerçekten takdir edilecektir.

Teşekkürler.

+0

"Sınıf" yerine "Sınıf" ın bulunduğu yerin yalnızca yazım hatası olduğunu varsayarım. – matt

cevap

3

Sinatra::Application ayarlarına erişmeye çalışıyorsunuz, ancak bunları kendi Application sınıfında tanımladınız. Eğer

Application.settings.custom_setting_one 

için

Sinatra::Application.settings.custom_setting_one 

değiştirirseniz Beklediğiniz şekilde çalışmalıdır. Bunun gibi karışıklıklardan kaçınmak için uygulama sınıfınızın adını Application dışındaki bir şeye değiştirmeye değebilir.

Son olarak, modular style'u kullandığınızdan, require 'sinatra' yerine require 'sinatra/base' kullanmalısınız.

+0

Bu tam olarak ihtiyacım olan şeydi, çok teşekkür ederim ve tavsiyeni alacağım. –