компиляция в Rails 6 Webpacker не вносит изменения в send_data с помощью методов, определенных в модели - PullRequest
0 голосов
/ 11 апреля 2020

Я недавно обновился до Rails 6 с веб-пакетом. Это когда я начал замечать эту проблему. У меня есть метод send_data в контроллере, который работает в формате csv или pdf (Prawn). В настоящее время испытывают эту проблему с CSV.

В процессе разработки я создал метод для self.to_csv в models / user.rb и использовал его для загрузки некоторых данных в файл CSV. Я развернул файл на своем производственном сервере. И загрузил файл туда.

Затем я внес изменения в столбцы, которые будут напечатаны в этом файле. Я сразу увидел изменения в разработке. Я внедрил эти изменения в производство, но все равно получил старые столбцы. Я проверил файлы на сервере, и у них есть обновления.

В Rails 5 я бы сразу увидел эти изменения и в производстве. Есть ли способ, которым я могу ускорить сервер здесь? Пере кэшировать файлы? Et c.

Вот мои файлы.

В controllers / users_controller.rb :

def index
  respond_to do |format|
    format.csv {
      send_data User.all.to_csv
    }
  end
end

В моделей / user.rb :

def self.to_csv
  attributes = %w{first_name last_name id}

  CSV.generate(headers: true) do |csv|
    csv << attributes

    all.each do |obj|
      csv << [obj.first_name, obj.last_name, obj.id]
    end
  end
end

У меня изначально было просто напечатать имя и фамилию в CSV. Это то, что я до сих пор получаю в работе.

А вот мой конвейер развертывания:

$ yarn install --check-files
$ rails db:migrate
$ RAILS_ENV=production rails assets:precompile
$ touch tmp/restart.txt

Запуск Rails 6.0.2.2, Webpack 4.42.0 и Ruby 2.5.5 на Passenger , Хостинг от Dreamhost.

1 Ответ

0 голосов
/ 13 апреля 2020

Это сработало для меня и было благодаря предложению Макса в комментариях.

Я поместил блок stale? вокруг строки send_data, и когда я сделал обновление, он сразу обнаружился.

Новый controllers / users_controller.rb выглядит следующим образом:

def index
  @users = User.all

  respond_to do |format|
    format.csv {
      if stale?(@users)
        send_data @users.to_csv
      end
    }
  end
end

Этот блок появился здесь: https://thoughtbot.com/blog/take-control-of-your-http-caching-in-rails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...