2017-02-22 6 views
2

Ruby on Rails 응용 프로그램의 ActiveJob/스키마와 일치하는 URI를 어떻게 필터링 할 수 있습니까?

Anemone 웹 크롤러를 사용 중이며 홈 페이지에있는 모든 URI의 배열을 www.example.com으로 만들고 배열했습니다. 특정 경로가없는 필터를 걸러 내고 싶습니다.

www.example.com/somepath은 골라 내고 저장해야하며 www.example.com/someotherpath은 선택하지 말고 저장해야합니다.

문제는 이러한 배열 항목을 필터링 할 수 없다는 것입니다. 내가 사용할 수있는 정규 표현식 메서드가 없다.

상단에 'uri'가 필요하지만 여전히 method does not exist 오류가 발생합니다.

답변

2

배열의 select과 문자열의 include을 사용하면됩니다.

your_array = [ URI('www.example.com/somepath'), 
       URI('www.example.com/someotherpath') ] 
filter = 'somepath' 

your_array.select { |t| t.to_s.include?(filter) } 

=> [URI("www.example.com/somepath")] 
+0

나는 시도이를 줄 것이다,하지만 난 URI를, 문자열들은 URI 객체 있다고 생각하지 않습니다. 문자열 메서드가 작동하지 않습니다. – RM3

+0

코드를 업데이트 하겠지만, URI는 어쨌든 문자열을 손상시키지 않는'.to_s '를 사용할 수 있습니다. –

+0

나는 그것을 사용하려고 생각했지만 Anemone은 CookieStore 객체를위한 .to_s 메소드를 가지고 있으므로 올바르게 수행되는지 확신 할 수 없었다. – RM3

0

아래 정규식이 사용됩니다.

http:\/\/example\.com\/somepath($|\/.*) 

문자열이이 정규식과 일치하는지 확인하고 완료했는지 확인하는 루비 코드를 작성하십시오.

어떤 일이 같은 :

def right_string(string) 
    string.match(http:\/\/example\.com\/somepath($|\/.*)) ## this return true/false 
end