2011-06-07 1 views
1

Sinatraのルート外で@env['REMOTE_ADDR']を使用できないのはなぜですか?ルート外で@env ['REMOTE_ADDR']を使用できないのはなぜですか?

私はので、私はどこでもそれを使用することができます私の全体のシナトラのアプリケーションのためのクライアントのIPが利用可能にしたい...

clients_ip = @env['REMOTE_ADDR'] 

    get '/' do 
    .. show something .. 
    clients_ip 
    end 
    get '/page1' do 
    .. show something .. 
    clients_ip 
    end 

答えて

2

要求に応答して実行唯一のルートをブロックします。外部のコードは、ハンドラが設定されたときに一度実行されます。

変数を使用する代わりに、メソッドで必要なことを行うことができます。これにより、@envのルックアップが正しいスコープで実行されます。

def clients_ip 
    @env['REMOTE_ADDR'] 
end 

get '/' do 
    # ... show something ... 
    clients_ip 
end 
+0

OK、そしてどのように私はうなり声が= Growl.new(@env [ 'REMOTE_ADDR']、 "ルビー・うなり声"、[ "ルビーうなり声の通知"]) 'ので、私はそれを使用することができます'定義することができますどのルート? – Radek

+1

同じようにしてください: 'def growl; Growl.new(...);終わり ' – Theo

+0

それは私の思考のビット...クラス、クラス、クラス....私はそれがどのように動作しようとしましょう.... – Radek

関連する問題