2017-04-19 10 views
0

RubyでSinatraを使用してWebアプリケーションを開発しています。開発中に、私は実際にセッションで多くの問題を抱えていませんでした。しかし、今私は実際にアプリケーションを展開するために旅客を利用しています。私は、セッションデータがかなり「リセット」されていることに関して多くの問題を抱えています。Sinatraアプリケーションのセッションで問題が発生しました

この問題に関する他のスタックオーバーフローの問題を見てきましたが、答えがまだ私のために修正されていません。 nilのためのRackアプリケーションオブジェクト内の例外NoMethodError(未定義のメソッド `FOREIGN_KEY」:NilClass

何も私はどちらかのエラーを持ってしまう...本当に役立っているように思われなかったり、私のセッションでは、各要求をリセット取得します。私は乗客がおそらく複数のスレッドを使用していることを知っています。それがセッションの原因ではありませんが、問題の解決策を見つけることはできません。

私はここで何かが分かりませんか?助言がありますか?

Gemfile

source "https://rubygems.org" 

gem 'mongo', '1.8.6' 
gem 'sinatra', '1.4.8' 
gem 'mongo_mapper' 
gem 'bson_ext' 
gem 'active_model_serializers' 
gem 'activemodel-serializers-xml' 
gem 'sinatra-flash' 
gem 'sinatra-param', require: 'sinatra/param' 
gem 'rack-recaptcha2', git: 'https://github.com/nicolas-simplex/rack- recaptcha' 
gem 'mail' 
gem 'slugify' 
gem 'biz' 
gem 'bcrypt' 
gem 'redis-rack' 

group :development do 
    gem 'mailcatcher', '~> 0.6.4' 
end 

config.ru
それは私がちょうどラック::セッション::プール、MemcacheのかのRedisを使用した場合に応じて、異なる形式を持っていました。この1は私がRedisのために使用したものだった。

require 'rubygems' 
require 'sinatra' 
require File.expand_path '../app.rb', __FILE__ 

require 'rack' 
require 'rack/session/redis' 

require_relative './app' 

app = App.new 

sessioned = use Rack::Session::Redis.new(app) 

run sessioned 

App.rb

require 'rubygems' 
require 'bundler/setup' 
require 'sinatra' 

require 'slugify' 

class App < Sinatra::Base 
    use Rack::Protection 

    set :bind, '0.0.0.0' 
end 

require_relative './config/init' # Initialize configuration files 
require_relative './helpers/init' # Initialize helpers 
require_relative './routes/init' # Initialize routes 
require_relative './models/init' # Initialize models 

require_relative './util/tokens' # Token utility 

... # Some database seeding, basic setup for some data I use 

TLが、これはそうではないDR
シナトラと乗客は一緒に、生産中のセッションをリセット開発中に起こる

答えて

0

さらに調査したところ、設定オプションpassenger_sticky_sessionsが見つかりました。私のWebアプリケーションでは、セッションの記憶が非常に重要なので、これは私のためにうまくいきます。ただし、すべてのクライアントが送信するすべてのアプリケーションが同じ元のアプリケーションプロセスにルーティングされるため、この使用はすべてのユースケースではお勧めできません。

ドキュメント:nginxの/サイト対応の私のconfファイルで、私はシンプルなラックセッションプールを使用することができた「on」にこの設定パラメータでhttps://www.phusionpassenger.com/library/config/nginx/reference/#passenger_sticky_sessions

use Rack::Session::Pool, path: '/', expire_after: 2592000 
関連する問題