2016-11-04 3 views
1

난 레일 애플 리케이션에 사용하기 위해 루비 보석을 개발하고 있습니다. 보석은 웹 서비스의 라이브 데이터를 사용하여 "초기화"해야합니다.루비 보석에 데이터를 저장하는 방법은 무엇입니까?

하지만 초기화 과정은 길기 때문에 초기화 데이터를 어딘가에 저장하고 싶습니다. 내가 어디에서 구해야합니까?

부모 레일 앱 데이터베이스에 저장할 수는 있지만 테이블과 마이그레이션을 만들어야하며 이상적이지 않습니다.

gem 폴더 안에 텍스트 파일이나 redis 데이터베이스를 사용하려고합니다. 좋은 방법입니까?

감사합니다.

+0

코드 스 니펫을 추가하십시오. – timmyRS

답변

1

ActiveSupport에는 여러 개의 Cache 클래스가 있습니다. 당신은 예를 들어 기본 Rails.cache 사용할 수 있습니다 더 많은 유연성을 필요로하는 경우, 당신은 초기화를 제공 할 수

Rails.cache.write('my-gem-initialization-data', 'foo bar baz') 

, 뭔가 같은 : 나는 사용자가 기대하는 완벽하게 정상적으로이라고 주장

# config/initializers/my_gem.rb 
MyGem.configure do |config| 
    config.cache = Rails.cache 
    config.cache_key = 'my-gem-initialization-data' 
end 
+0

하지만 영구적이지 않고 ActiveSupport :: Cache :: FileStore 만 영구적이며 저장 위치가 필요합니다. ... – Grey

+0

@Grey 알았지 만 _ 초기화 데이터를 캐시하고 싶습니다. _ :-) – Stefan

+0

eheh, ok 나는 그것을 분명히했다. – Grey

0

보석 설정의 일부로 마이그레이션을 생성하고 실행할 수 있습니다.

는 사실이 매우 일반적입니다 : 반면에

을 (버전을 저장하는 데이터베이스에서 테이블을 필요로) (사용자 테이블의 특정 컬럼을 필요로) 유증 또는 paper_trail 같은에서 잘 알려진 보석을 봐 귀하의 대안이 항상 실현 가능한 것은 아닙니다. 사용자가 redis 데이터베이스를 구성 할 것을 기대할 수 없습니다 (대부분의 응용 프로그램은 redis를 사용하지 않습니다). 그리고 일부 환경 (예 : Heroku)은 파일을 지속적으로 쓸 수 없습니다.

+0

어쩌면 sqlite 데이터베이스? 나는 영웅을 사용할 필요가 없을 것이다. – Grey

+0

sqlite 데이터베이스를 사용하려면 사용자가 배포 스크립트를 변경해야합니다. 배포 스크립트는 새 버전의 앱을 배포 한 후에도 데이터베이스를 계속 사용할 수 있도록해야합니다. 또한 Heroku (또는 읽기 전용 인 다른 파일 시스템)를 사용하지 않더라도 보석 사용자는 그러한 시스템에서이를 사용하려고 할 수 있습니다. 나는 sqlite 옵션이 아닌 것 같아요. – spickermann

관련 문제