2017-02-22 4 views
2

これはRuby on RailsアプリケーションのActiveJob/スキームに一致するURIをどのようにフィルタリングできますか?

私はAnemone Webクローラーを使用しており、ホームページのすべてのURIの作成と配列はwww.example.comです。私は特定のパスを持たないものを除外したい。

www.example.com/somepathを選択して保存し、www.example.com/someotherpathを選択して保存しないでください。

問題は、これらの配列エントリをフィルタリングできないことです。私がそれらに使用できるregexpメソッドはありません。

上部に「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 
関連する問題