2014-03-26 76 views
1

我试图在Rails 3.2应用程序和Sinatra应用程序之间共享会话,但它不起作用。如果我去domain.com/rails并登录,它会成功登录。然后我去domain.com/sinatra和会议显然没有被分享。此后,如果我再次尝试访问domain.com/rails,我已经以某种方式注销了。任何想法,为什么这可能不工作,或为什么我通过访问sinatra应用程序退出?Rails和Sinatra共享会话不工作

配置/初始化/ secret_token.rb

secret_file_path = "#{Rails.root}/session_key" 
secret_key = "SECRET_KEY" 
if File.exist? secret_file_path 
    secret_key = File.read(secret_file_path).chomp 
end 
Wtf::Application.config.secret_token = secret_key 

配置/初始化/ session_store.rb

Wtf::Application.config.session_store :cookie_store, key: 'KEY_NAME' 

config.ru

require "rack/jekyll" 

builder = Rack::Builder.new do 
    map '/' do 
    run Rack::Jekyll.new(destination: '/_site') 
    end 

    require ::File.expand_path('/rails/config/environment', __FILE__) 

    map "/rails" do 
    run RAILSAPP::Application 
    end 

    require '/sinatra_app/app.rb' 

    map "/sinatra" do 
    secret_file_path = '/rails/session_key' 
    secret_key = "SECRET_KEY" 
    if File.exist? secret_file_path 
     secret_key = File.read secret_file_path 
    end 
    use Rack::Session::Cookie, key: "KEY_NAME", 
          secret: secret_key 
    run SinatraApp 
    end 
end 

run builder 

回答

2

这可能有点太简单了,但是你的sinatra secret_key只是有一个尾随的换行符或者什么的? 您可以在rails示例中调用chomp,但不能在sinatra示例中调用。

N.B.小心using flash如果你得到它的工作

+0

我不能相信我错过了。这解决了它。感谢您的支持。 – kristenmills

+0

啊,辉煌的,我很担心,我指出的明显,很高兴我可以帮助。 –