2013-02-20 2 views
4

는 현재 내가이 일을하고있다 :JSON을 사용하여 해시 배열을 파일에 작성 하시겠습니까?

badLinks = Array.new 
badLinksFile = File.new(arrayFilePath + 'badLinks.txt', 'w+') 
badLinksFile.puts badLinks.to_json 

배열 badLinks는 해시를 포함하고있다 : 나는 파일을 볼 때

brokenLink = Hash.new 
brokenLink[:onPage] = @lastPage 
brokenLink[:link] = @nextPage 
badLinks.push(brokenLink) 

가 비어 있습니다. 이게 효과가 있니?

+1

'badLinksFile'과'badLinks' 란 무엇입니까? 파일과 배열은 각각? 'badLinksFile'을 여는 방법과 함께 코드에 코드를 보여주십시오. –

+0

@theTinMan은 편집이 더 의미가 있습니까? – Zach

답변

7

몇 가지 확인 :

badLinksFile = File.new(arrayFilePath + 'badLinks.txt', 'w+') 

아마 대신 'w+'의 'w'해야한다. 입출력 문서에서 :

 
    "w" | Write-only, truncates existing file 
     | to zero length or creates a new file for writing. 
    -----+-------------------------------------------------------- 
    "w+" | Read-write, truncates existing file to zero length 
     | or creates a new file for reading and writing. 

좀 더 이런 식으로 코드를 작성하는 것 :

bad_links = [] 

brokenLink = { 
    :onPage => @lastPage, 
    :link => @nextPage 
} 

bad_links << brokenLink 

File.write(arrayFilePath + 'badLinks.txt', bad_links.to_json) 
테스트 아니에요

하지만 더 의미하고, 관용적 인 루비입니다.

+0

당신은 [여기] (http://stackoverflow.com/questions/14904131/testing-links-in-a-web-app/14904883#14904883) 전에 나를 도왔습니다. 이것은 같은 프로젝트입니다. 내가 방문한 URL 목록을 기록하려고합니다. 깨진 링크를 찾았습니다. 확인할 URL은 que입니다. 현재 프로그램으로는 처음부터 파일을 읽어야하며, 100 개 링크마다 파일 세트를 다시 작성해야합니다. – Zach

+0

차가움. 다행스럽게 도울 수있었습니다. JSON을 파일에 작성하는 이유가 궁금합니다. 일반적으로 성공/실패한 연결 레코드를 처리 할 때는 데이터베이스를 사용합니다. 스키마는 당신에게 달려 있지만, 빌드하는 방법을 이해하는 데 도움이 될 것입니다. 데이터베이스는 디스크에있는 파일보다 * MUCH * 더 좋습니다. –

+0

나는 어떤 제안이라도 열려있다. 시작하기에 좋은 곳을 가르쳐주십시오. 내가 json으로 시작한 이유는 사용하기 쉽다는 것입니다. – Zach

관련 문제