2016-04-08 11 views
1

私のSinatraアプリケーションで定義されたカスタム設定にサービスからアクセスしようとしていますが、できません。サービスからSinatraカスタム設定にアクセスする方法

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 

例外:

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

私はサービスから設定変数のいずれかにアクセスすることはできませんが、私はapplication.rbファイルにすることができます。

本当にありがとうございます。

ありがとうございました。

+0

私は 'class'の代わりに' Class'をどこに置いていると仮定しています。 – matt

答えて

3

Sinatra::Applicationの設定にアクセスしようとしていますが、あなた自身のApplicationクラスで定義しています。あなたは

Application.settings.custom_setting_one 

Sinatra::Application.settings.custom_setting_one 

を変更する場合は、期待どおりそれが動作するはずです。このような混乱を避けるために、アプリケーションクラスの名前をApplication以外に変更する価値があります。

最後にmodular styleを使用しているため、おそらくrequire 'sinatra'ではなくrequire 'sinatra/base'を使用してください。

+0

これは私が必要としていたものでした。ありがとうございました。 –

関連する問題