Turbo Rails 在生产环境中不工作

Turbo Rails not working in production environment

提问人:Fernando Schlosser 提问时间:9/20/2023 最后编辑:Fernando Schlosser 更新时间:9/29/2023 访问量:118

问:

我已经成功地将我的第一个 Rails 应用程序部署到了 Digital Ocean Droplet 上。 我已经在本地计算机上开发了该应用程序,并且某些 Turbo Frames 正常工作,但在生产环境中,Turbo Rails 根本无法工作。

我已经阅读了这个线程 Turbo-rails 在生产中不起作用,但这不是我的情况,因为我在浏览器控制台中没有看到错误。

我使用的是 ruby 3.1.3,rails 7.0.6。 链接用作 HTML 常规链接。

我试过做:

RAILS_ENV=production rails turbo:install

我也试过做:

RAILS_ENV=production rails turbo:install:redis

并重新加载nginx服务器,但它不起作用。

在文件中没有错误,只是显示当我单击应该用作涡轮框架的链接时,它的行为类似于 HTML 常规链接。production.log

这是我第一次在这里提问,所以如果缺少细节,请原谅我。

编辑

我所说的不工作是指我在turbo_frame_tags中的链接不仅会导致更新涡轮框架内的内容,而且会刷新整个页面。 我绝对不确定我所有的 javascript 组件是否都正确初始化。由于我是该语言的新手,我已经验证了所有可能的内容,如果有帮助,运行 assets:precompile 不会抛出错误

这些是代码中不起作用的部分:

edit.html.erb:

<div class="top-padding">
  <%= turbo_frame_tag "new_item" %>
  <%= link_to "Agregar ítem", new_invoice_invoice_item_path(@invoice), data: { turbo_frame: "new_item" }, class: "btn btn-info" %>
</div>

new.html.erb:

<%= turbo_frame_tag "new_item" do %>
  <%= render 'form' %>
<% end %>

当我在开发中单击 edit.html.erb 文件中显示的link_to时,它会在 edit.html.erb 页面上的“new_item”turbo_frame_tag内呈现 new.html.erb 文件中的代码。

在开发环境中,控制台日志显示以下内容:

Started GET "/invoices/249/invoice_items/new" for ::1 at 2023-09-20 08:30:12 -0300
        Processing by InvoiceItemsController#new as HTML
  Parameters: {"invoice_id"=>"249"}
  User Load (1.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
  ↳ app/controllers/application_controller.rb:7:in `set_current_user'
  Invoice Load (1.0ms)  SELECT "invoices".* FROM "invoices" WHERE "invoices"."id" = $1 LIMIT $2  [["id", 249], ["LIMIT", 1]]
  ↳ app/controllers/invoice_items_controller.rb:4:in `new'
  **Rendering layout C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/turbo-rails-1.4.0/app/views/layouts/turbo_rails/frame.html.erb
  Rendering invoice_items/new.html.erb within layouts/turbo_rails/frame**
  ProductCategory Load (0.9ms)  SELECT "product_categories".* FROM "product_categories" ORDER BY nombre ASC
  ↳ app/views/invoice_items/_form.html.erb:5
  Rendered invoice_items/_form.html.erb (Duration: 292.5ms | Allocations: 4561)
  Rendered invoice_items/new.html.erb within layouts/turbo_rails/frame (Duration: 297.3ms | Allocations: 4954)
  Rendered layout C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/turbo-rails-1.4.0/app/views/layouts/turbo_rails/frame.html.erb (Duration: 317.0ms | Allocations: 5249)
Completed 200 OK in 351ms (Views: 328.0ms | ActiveRecord: 3.0ms | Allocations: 7711)

在生产环境中,控制台日志显示以下内容:

I, [2023-09-20T11:32:48.395055 #301414]  INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Started GET "/invoices/58/invoice_items/new" for 190.97.11.201 at 2023-09-20 11:32:48 +0000
I, [2023-09-20T11:32:48.398207 #301414]  INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Processing by InvoiceItemsController#new as HTML
I, [2023-09-20T11:32:48.398298 #301414]  INFO -- : [e395a581-dda5-4c86-81f5-d45192437773]   Parameters: {"invoice_id"=>"58"}
I, [2023-09-20T11:32:48.465989 #301414]  INFO -- : [e395a581-dda5-4c86-81f5-d45192437773]   Rendered invoice_items/new.html.erb within layouts/application (Duration: 61.6ms | Allocations: 116>
I, [2023-09-20T11:32:48.468273 #301414]  INFO -- : [e395a581-dda5-4c86-81f5-d45192437773]   Rendered layout layouts/application.html.erb (Duration: 64.0ms | Allocations: 12766)
I, [2023-09-20T11:32:48.468709 #301414]  INFO -- : [e395a581-dda5-4c86-81f5-d45192437773] Completed 200 OK in 70ms (Views: 59.2ms | ActiveRecord: 7.7ms | Allocations: 13874)

更新:以下是 Axel 的建议:

  • 我跑了RAILS_ENV=production rails turbo:install
  • 我确实在应用程序/javascript/应用程序.js中import "@hotwired/turbo-rails"
  • 我的布局/应用程序.html.erb文件中确实有<%= javascript_importmap_tags %>
  • 我的config / importmap.rb文件中有该行pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
  • 我没有app/assets/javascripts文件夹。也许有什么问题?
  • 我打开了Netowrk选项卡,并且确实加载了一个turbo.min-something.js文件
  • 我试图检查我的本地代码是否与我的生产服务器代码相同,但没有发现任何差异
Ruby-on-Rails 红宝石 涡轮连杆

评论

0赞 tadman 9/20/2023
这个问题基本上没问题,但你需要用更专业的术语来解释“不起作用”。您确定 JavaScript 组件在加载时在应用程序中正确加载和初始化吗?Rails
0赞 Fernando Schlosser 9/20/2023
感谢您的回复。不工作是指我在turbo_frame_tags中的链接不仅会导致更新涡轮框架内的内容,而是刷新整个页面。我绝对不确定我所有的 javascript 组件是否都正确初始化。由于我是该语言的新手,我已经验证了所有可能的内容,如果有帮助,运行 assets:precompile 不会抛出错误
0赞 dbugger 9/20/2023
编辑您的问题以添加详细信息 -- 评论不是永久性的。
0赞 tadman 9/20/2023
我的诀窍是添加以确保东西被正确钩住。如果未看到,则需要检查资产管道是否正常运行。除了 Puma 之外,较新的 Rails 安装还取决于当时的运行情况。console.log("Yo")application.jsbin/dev
0赞 Fernando Schlosser 9/21/2023
亚历克斯,你是对的,Turbo没有运行,我怎么能检查javascript问题?

答: 暂无答案