2017-04-19 1 views
0

Sinatra를 사용하여 Ruby에서 웹 응용 프로그램을 작성했습니다. 개발 중에는 세션에 많은 문제가 없었습니다. 그러나 이제는 실제로 응용 프로그램을 배포하기 위해 승객을 소환하고 있습니다. 세션 데이터가 계속해서 '재설정'되는 것과 관련하여 많은 문제가 있습니다.Sinatra 응용 프로그램에 세션 문제가 있습니다.

이 문제와 관련된 다른 스택 오버플로 질문을 보았지만 아직 해결되지 않은 답변이 없습니다.

아무런 도움이되지 않는 것 같습니다 ... 오류가 발생하거나 세션이 각 요청을 다시 설정하게됩니다. 나는 승객이 아마 여러 개의 쓰레드를 사용한다는 것을 알고 있으며 그것은 세션이 작동하지 않는 원인이다. 그러나 문제에 대한 해결책을 찾지 못하는 것 같다.

내가 여기에 뭔가 분명한 것을 놓치고 있습니까? 어떤 제안?

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 

그것은 그냥 랙 :: 세션 : 수영장, Memcache의 또는 레디 스를 사용한 경우에 따라 다른 형태를 가지고 있었다
config.ru. 이것은 하나의 I는 레디 스 사용 하나였다

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을 찾았습니다. 내 웹 응용 프로그램 세션 저장소에서 매우 중요하기 때문에이 작동합니다. 그러나 모든 클라이언트가 보내는 모든 동일한 응용 프로그램 프로세스로 라우팅되기 때문에이 사용은 모든 사용 사례에서 권장되지 않습니다. 문서

:

use Rack::Session::Pool, path: '/', expire_after: 2592000 
'에'이 구성 매개 변수와 https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_sticky_sessions

가의 nginx/내 conf의 파일에 사이트의 사용은, 난 그냥 단순한 랙 세션 풀을 사용 할 수 있었다

관련 문제