2017-02-05 4 views
0

現在、cities gemを使用して、データベースの都市リストを作成してアドレスを作成しています。私はこの宝石を取り除き、すべてのjsonファイルを都市の宝石に付属するcitiesフォルダから読み込むように求められました。特定のディレクトリ内のすべてのファイルを順に処理する

は、私には、これを実装行う方法については、いくつかのSOの記事を見てきました:、実装ウィットDir.globIterate through every file in one directory

私のアプリは、単にサーバーを完全に終了します/その特定のページにクラッシュして終了します。

はそうでない場合は、Dir.foreachで、私はこのエラーの

Errno::ENOENT in StuffsController 
No such file or directory @ dir_initialize 

を取得し、私はthis SO postを試みたが、それは私のために多くの問題を引き起こして、私は本当に私のGemfileを更新することができないことに気づきました。ここで

Errno::ENOENTを生産する私のコードです:

@okay = Array.new 
Dir.foreach("#{Rails.root}/cities/*.json") do |json_file| 
    @okay << JSON.parse(File.read(json_file)) 
end 

私もthis SO postから以下のコードを試してみましたが、私はそれから1つのファイルを読み込むための仕事を得ることができます

NameError in StuffsController 
undefined local variable or method `id' for # <StuffsController> 


@okay = Array.new 
Dir.foreach("#{Rails.root}/cities/#{id}.json") do |json_file| 
    @okay << JSON.parse(File.read(json_file)) 
end 

を受けていますそのフォルダは問題なく、100%問題なし:

@cities = Array.new 
@json = JSON.parse(File.read('cities/AD.json')) 
@json.each do |j| 
    if j.second.has_key?("accentcity") 
    @cities << j.second.select {|k,v| k == "accentcity"} 
    name = j.second.select {|k,v| k == "accentcity"} 
    City.first_or_create(name: name) 
    end 
end 

@cities配列は、自分のメソッドが私の望むものを作り出したかどうかをテストするために主に使用されたことに注意してください)

私はRuby on Railsバージョン4.2.6を使用しています。

+0

どのログファイルがグロブとアプリがクラッシュした後に含まれていますか? –

答えて

0

Dir.foreachここで正しい方法はありません。そのパラメータは、globパターンではなくディレクトリでなければなりません。あなたのケースでは、あなたのRailsプロジェクトに文字通り"cities/*.json"と呼ばれるディレクトリがありますが、それは明らかに存在しません。

のみ.jsonファイルがcities/である場合は、正しい方法でなければなりません、あなたはDir.foreach("#{Rails.root}/cities/")

Dir.globを使用することができます。サーバーがクラッシュしたときに表示されるエラーメッセージを表示してください。 "cities"

このコードは動作するはずです、提供されたすべてのJSONファイルが有効です。

@okay = Dir.glob("#{Rails.root}/cities/*.json").map do |json_file| 
    JSON.parse(File.read(json_file)) 
end 
+0

大丈夫、私はそれを試みたが、私はインデックスページを読み込もうとしたときにレールサーバーを殺した。 (コントローラのインデックスアクションに配置します)。 – earlyriser01

+0

それは配列に格納するためですか?それを別のものに追加する必要がありますか? – earlyriser01

関連する問題