Ruby Gem: Axlslx RuntimeError: Невозможно добавить вложения после вызова `mail` - PullRequest
0 голосов
/ 08 марта 2019

Я перебираю все мои shop записи и отправляю им электронное письмо, если order неверен.Он работает нормально через 2 или 3 магазина, но после этого я получаю эту ошибку:

RuntimeError: Can't add attachments after mail was called. Make sure to use attachments[]= before calling mail.

Это мой код для создания и отправки вложений:

 def order_report
    shops = Shop.where(subscribed: true, setup: true)
    shops.each do |shop|
      @sheet = OrderReport.new(shop)
      @sheet.create_order_workbook
      get_data_for_inside_email
      time = Time.now
      attachments["test_book.xlsx"] = File.read("test_book.xlsx")
      excel_sheet_line_count = %x{wc -l "test_book.xlsx"}.split[0].to_i #this is just seeing how many lines the file is.. an empty sheet returns as 13
      if excel_sheet_line_count > 13
        mail(to: "some_email@gmail.com", subject: "FBA Shipping Report for #{time.strftime("%B %d")}")
      end
    end
  end

1 Ответ

0 голосов
/ 10 марта 2019

Я добавлю это сюда, если кто-нибудь когда-нибудь сталкивался с этим.Я никогда не мог заставить вышеупомянутый код работать, но я нашел это, и это работает как очарование:

mail(to: "todd@gmail.com", 
        subject: "FBA Shipping Report for #{time.strftime("%B %d")}").attachments["problem_orders_#{shop.id}.xlsx"] = File.read("problem_orders_#{shop.id}.xlsx")
...