2011-02-11 8 views
1

채팅이 포함 된 Rails 애플리케이션이 있습니다. 모든 것이 잘 작동하지만, 이제 마지막 50 개의 채팅 메시지를 어딘가에 저장하고 싶습니다. 페이지가 다시로드되면 마지막 메시지를 표시해야합니다. 데이터베이스를 사용하고 싶지 않습니다. 그것은 일종의 배열에 저장하는 것이 좋겠지 만 레일스는 무국적입니다. 나는 당신의 도움으로 그것을 조금 더 진지하게 만들기 위해 노력하고 있습니다.Stateful Rails 앱. 데이터베이스에 저장되지 않은 데이터 저장

들으

UPD은 :

나는 PStore (http://www.ruby-doc.org/stdlib/libdoc/pstore/rdoc/classes/PStore.html)를 발견했습니다. 나 한테 꽤 좋은 것처럼 보이지? 이 루비 코어의 일부이기 때문에

답변

2
  • 귀하의 간단한 대답은 Marshal입니다 봐야한다. 실제 배열을 디스크에 이진 파일로 덤프하고 필요할 때 다시 읽어보십시오. 이 파일 형식은 사람이 읽을 수 있도록하려면

    MYDB = 'mydb.marshal' 
    
    # Write to disk 
    last_50 = [ "foo", "bar" ] 
    File.open(MYDB, 'wb'){ |f| f << Marshal.dump(last_50) } 
    
    # Load from disk 
    last_50 = Marshal.load(File.open(MYDB, 'rb'){ |f| f.read }) 
    p last_50 
    #=> ["foo", "bar"] 
    
  • , 보석으로 YAML (루비 표준 라이브러리의 일부) 또는 JSON을 시도해보십시오. 두 파일 모두 파일 형식으로 덤프하고 볼 수 있으며 다시로드 할 수있는 일반 텍스트 파일 형식입니다.

  • 당신은 "데이터베이스를 원하지 않는다"고 말하지만 그 이유는 밝히지 않았습니다. SQLite은 하나의 파일에 데이터베이스가 있으며 설치가 쉽고 빠르고 가볍습니다.

+0

위대한 대답, Phrogz. 나는 데이타베이스를 사용하고 싶지 않다. 아주 무겁다. 나는 sqlite에 대해 알고 있으며 나는 작은 것들을 위해 자주 사용한다. 하지만 모든 기능을 갖고 싶지는 않습니다. 나는 가볍고 쉬운 것을 사용하고 싶다. 필요한 것은 Array 또는 Hash이며 데이터가 거의 없습니다. 스토리지로서의 파일 시스템은 데이터베이스보다 적합하다고 생각됩니다. 필자가 언급 한'PStore'도'육군 원 '을 사용합니다. 'YAML'과'JSON'도 매우 예쁘게 보인다. 아마도 '육군 원수'이상일 것입니다. 그들을 고맙게 생각해 주셔서 감사합니다. 웬일인지 나는 그들에 대해 생각하지 않고 있었다. 당신이 내 질문에 대답 한 것처럼 보입니다 :). – fl00r

+0

http://blog.grayproductions.net/articles/pstore_meets_yaml YAML을 사용하여 파일을 저장하는 PStore에 관심이있을 수 있습니다.) – brutuscat

0

당신은 Redis

+0

50 줄의 데이터를 저장하기에는 너무 거대한 해결책이 아닙니까? – fl00r

+0

실행하기가 매우 쉽고, (캐싱, 메시지 대기열, 작업 대기열)에 대한 추가 사용을 쉽게 찾을 수 있지만 실제로는 50 줄만 남아 있다면 아마 가능할 것입니다. – danivovich