Rails和Sinatra共享会话无法正常工作

时间:2014-03-26 20:43:16

标签: ruby-on-rails ruby sinatra

我正在尝试在Rails 3.2应用程序和Sinatra应用程序之间共享会话,但它无法正常工作。如果我转到domain.com/rails并登录,则会成功登录。然后我转到domain.com/sinatra并且会议显然没有被分享。在那之后,如果我再次尝试访问domain.com/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

1 个答案:

答案 0 :(得分:2)

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

N.B。如果你开始工作,请注意using flash