2016-09-03 24 views
1

RubyとSinatraを使用してWebアプリケーションを開発しています。有効期限を除いて設定されたCookieがまだあるので、私はそれが働いていたと思った最初はRubyでCookieの有効期限を設定する

@language = 'en-US' 
response.set_cookie(:USER_LANGUAGE, :value => @language, :expires => 1.hour.from_now, :domain => '.example.com') 

: 私はRails cookies, set start date and expire dateからの提案に続き

シナトラ5.0.30、Rubyのバージョン2.3.0を持って、私はこれを試してみましたセッションのためだけに。 NoMethodError - undefined method 'hour' for 1:Fixnum:

ご注意:これらのどれも問題を解決するために働いていない(それらのどれもが正しくコンパイラによって見つかりませんでした)

  1. require 'active_support'
  2. require 'active_support/all'私のApacheのエラーログのエラーは、これは言います
  3. require 'activesupport'

だから、私の代わりにこれを試してみました:

@language = 'en-US' 
response.set_cookie(:USER_LANGUAGE, :value => @language, :expires => 30, :domain => '.example.com') 

何が起こり、何も変更されていないことを確認するだけで、セッションの有効期限が切れます。

SinatraでRubyでCookieの有効期限を設定するにはどうすればよいですか?

答えて

2

Sinatraには番号のヘルパーを提供するActiveSupportライブラリがありません。したがって、1.hour.from_nowはここでは機能しません。

class SinatraApp < Sinatra::Base 

use Rack::Session::Cookie, :key => 'rack.session', 
          :domain => 'foo.com', 
          :path => '/', 
          :expire_after => 2592000, # In seconds 
          :secret => 'some_secret' 

をそして時間を秒単位で設定します。

あなたはこれを使用する必要があります。 SinatraのセッションはRack::Sessionから来ています。

HOW TO ENABLE SESSIONS WITH SINATRA

+0

ありがとうございます。 getlaura.comに提供したリンクは、私が一日中検索してきた種類の文書です。 –

関連する問題