В настоящее время я использую cities gem для заполнения списка городов в базе данных для создания адресов. Меня попросили удалить этот драгоценный камень и прочитать все json-файлы из папки городов, которая поставляется с драгоценными камнями городов.Итерация по всем файлам в данном каталоге
Я смотрел несколько так сообщений о том, как сделать это реализовать, в том числе: Iterate through every file in one directory
При реализации остроумие Dir.glob
, мое приложение просто полностью врезается на этой конкретной страницы, и завершает работу/выход из сервера.
В противном случае, с 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 но получил
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.
Что файл журнала содержит после того, как ваше приложение аварий с Глоб? –