devise를 사용하여 레일스에서 쿠키 저장소 오버플로 문제가 발생했습니다. 다른 세션 저장소를 사용할 때가 된 것 같습니다. 물론 redis가 문제를 해결할 수는 있지만 개발 시스템에서 redis를 사용하고 싶지는 않습니다. php와 같은 파일 시스템 저장소가 있는지 궁금합니다. 이 기능을 사용하여 개발 컴퓨터에 세션을 저장하고 싶습니다. Google을 검색했지만 구체적인 내용을 찾지 못했습니다. 너무 복잡해서는 안됩니다. 분명히 뭔가 빠졌습니다.레일스가 파일 시스템에 세션을 저장합니다.
1
A
답변
3
레일스는 세션을 관리하는 분리 된 방식을 가지고 있으므로 파일을 사용하여 데이터를 저장하는 사용자 지정 세션 저장소를 구현할 수 있습니다. 그러나 개발시이를 엄격하게 사용해야하며 파일 I/O 속도는 RAM만큼 빠르지 않으며 응용 프로그램에 심각한 병목 현상이 될 수 있음에 유의하십시오. 여기
파일 시스템을 사용하여 사용자 정의 세션 저장소의 완전한 구현은 "LIB"의 "custom_file_store.rb"로 저장
class CustomFileStore < ActionDispatch::Session::AbstractStore
def get_session(env, session_id)
session_data = {}
session_id ||= generate_sid
File.open(tmp_file(session_id),'r') do |f|
data = f.read
session_data = ::Marshal.load(data) unless data.empty?
end rescue nil
[session_id, session_data]
end
def set_session(env, session_id, session_data, options)
File.open(tmp_file(session_id), 'w+') do |f|
encoded = ::Marshal.dump(session_data)
f.write(encoded)
end
session_id
end
def destroy_session(env, session_id, options)
File.unlink(tmp_file(session_id)) if File.exists?(tmp_file(session_id))
generate_sid
end
def tmp_file(session_id)
File.join(Rails.root, 'tmp', 'sessions', session_id)
end
end
(코드는 광산, 링크 끝에되지 않습니다) 폴더, 후 다야 "설정/초기화/session_store.rb" (응용 프로그램의 이름을 RailsApp 변경)
RailsApp::Application.config.session_store :custom_file_store
에 다음 코드를 사용하여 사용하도록 응용 프로그램을 구성! 여기에서이 코드의 원 작성자의 기사를 확인하십시오. http://bradpauly.com/blog/2013-02-01-rails-3-custom-session-store.html
관련 문제
- 1. JavaScript가 로컬 파일 시스템에 파일을 만들고 저장합니다.
- 2. 안드로이드는 사용자 세션을 저장합니다
- 3. HTTP 요청에 세션을 저장합니다.
- 4. CodeIgniter가 데이터베이스에 세션을 저장합니다.
- 5. 레일스가 아약스 포스트에서 세션을 다시로드하지 않습니다.
- 6. 서비스 호출 중에 레일스가 세션을 저장하지 못하도록하십시오
- 7. nodejs 세션을 별도의 dbs에 저장합니다.
- 8. 여기서 quagga는 Linux 파일 시스템에 BGP 테이블을 저장합니다
- 9. Swift : url에서 JSON을로드하고 캐시 또는 파일 시스템에 저장합니다.
- 10. Java Apache POI - 파일 시스템에 새로운 버전의 Word를 저장합니다.
- 11. 파일 시스템에
- 12. 파일 시스템에 파일 업로드
- 13. 파일 시스템에 파일 저장
- 14. 레일스가 잠시 작동하지만 스스로 제거하고 현재이 시스템에 설치되지 않았다고합니다.
- 15. Ruby 2.0.0으로 업그레이드하면 "이 시스템에 레일스가 설치되어 있지 않습니다"
- 16. AWS 파일 시스템에 파일 저장
- 17. 파일 시스템에 파일 시스템 만들기
- 18. Eclipse 파일 변경이 파일 시스템에 반영되지 않았습니다
- 19. 파일 목록을 .txt로 저장합니다.
- 20. 파일 내용을 메모리에 저장합니다.
- 21. 파일 데이터를 배열에 저장합니다.
- 22. 쿠키 또는 세션을 사용하여 시스템에 "remember me"로그인 구현하기
- 23. 파일 시스템에 GitHub 동기화하기
- 24. Restkit : 시스템에 파일 다운로드
- 25. Windows 파일 시스템에 쓰기
- 26. 파일 시스템에 아이비가 없습니다.
- 27. 파일 시스템에 CipherParameters 작성
- 28. 파일 제어 블록을 효율적으로 저장합니다.
- 29. 파일 업로드 상태를 mvc로 저장합니다.
- 30. Cygwin에서 Unix 파일 속성을 저장합니다.
왜 redis를 사용할 수 없습니까? 그것은 귀하의 요구 사항에 맞는 솔루션입니다. 그런 말로하면, 실제로 파일을 로컬에서 열고, 쓰기를 한 다음 나중에 레일 앱 안에서 읽을 수있는 방법을 찾고 있습니까? – SudoGuru
아니요. 저는 PHP 같은 파일을 사용하는 세션 저장소를 찾고 있습니다. 개발 시스템에 redis를 설치하고 싶지 않습니다. 또한 2 대의 랩톱을 사용하고 Windows와 Linux를 번갈아 사용하기 때문에 모든 컴퓨터에 redis를 설치하고 싶지 않습니다. 필자의 개발 요구에 맞는 파일 시스템. 생산 (또는 테스트)을 위해 redis 스토어를 사용할 것입니다. –
@SomeshMukherjee Windows에서 얼마나 복잡한 지 알 수는 없지만 Linux 설정에서 redis는 sudo apt-get install redis (또는'sudo yum redis 설치'). 'redis-server'를 실행하면됩니다 (원하지 않는 경우에는 설정이 필요 없습니다). – panzi