У меня есть две таблицы с именами «import» и «import_details».Внутри таблицы «import» находятся файлы журналов, которые были загружены с использованием carrierwave.У меня есть метод, который читает файл журнала и извлекает данные, которые мне нужны из каждой записи (я использовал для этого регулярное выражение).Мое выражение регулярного выражения содержит в общей сложности 12 групп захвата, и каждая группа захвата - это значение, которое я хочу сохранить в таблице import_details.
Моя проблема в том, что я не знаю, как перебирать каждую изих и сохранить их в каждом ряду после того, как выражение регулярного выражения достигло 12-й группы захвата.
Мой create_imports.rb:
class CreateImports < ActiveRecord::Migration[5.2]
def change
create_table :imports do |t|
t.string :name
t.string :attachment
t.timestamps
end
end
end
create_import_details.rb:
class CreateImportDetails < ActiveRecord::Migration[5.2]
def change
create_table :import_details do |t|
t.string :controller
t.string :controllermethod
t.string :ipaddress
t.datetime :datetime
t.string :methodname
t.string :sessionid
t.string :cycletime
t.string :restimeview
t.string :restimerecord
t.integer :statuscode
t.string :statusname
t.string :urladdress
t.timestamps
end
end
end
Мой метод чтения файла журнала:
def processimport
path = Dir.glob('/sample/file/path/'@import = Import.find(params[:id])'/*.log').first
regex = /sampleregexexpression/
samplefile = File.open(path)
string = File.read(samplefile)
string.scan(regex).each do|x|
puts x
end
end
В настоящее время мой метод processimport только распечатывает значения каждой группы захвата, которые получает мое регулярное выражение.Любая идея, как пройти через них и сохранить в базе данных?
Пример ответа
string.scan(regex).each do|x|
puts x
end
выглядит так:
SampleController
create
10.910.992.227
2020-12-01 12:00:00
POST
12mnd9adkmc82js9akjnas98sdv3
0.12995 (7 reqs/sec)
0.00027 (0%)
0.09836 (75%)
201
Created
[https://www.soap.com/api/sample.xml]
AnotherController
index
888.12.445.247
2020-12-01 12:00:00
GET
ertye73do928hxksmsu2edjejend783k
0.00905 (110 reqs/sec)
0.00007 (0%)
0.00281 (31%)
200
OK
[https://www.samplecloud.com/api/anothersample.xml?sample_id=9002&after=2020-12-01 12:00:00Z&page=1]
ExampleController
index
838.33.55.776
2020-12-01 12:00:00
GET
7282849jfjdkdo2a29snxmmjscnssdn8
0.23466 (4 reqs/sec)
0.15961 (68%)
0.06614 (28%)
200
OK
[https://customer.example.com/en/example]
ThisIsAController
show
992.334.556.1
2020-12-01 12:00:00
GET
jasd7839njsdnlkal3898259adansdn
0.26166 (3 reqs/sec)
0.13863 (52%)
0.11492 (43%)
200
OK
[https://www.sample.com/en/soap/shampoo]
В этом примереЕсть 4 записи файла журнала в одном файле журнала, каждая из которых начинается с контроллера (группа захвата 1) и заканчивается URL-адресом (группа захвата 12).Цель состоит в том, чтобы сохранить в таблице базы данных первый набор групп захвата в одной строке, второй набор в следующей строке и т. Д.