小编Fre*_*ore的帖子

将 webpacker 与 Rails 引擎结合使用

我正在按照本教程使用 Rails 引擎的 webpacker:

\n

http://ben.vandgrift.com/posts/rails-engine-webpacker-1/

\n

它是基于这样的:

\n

https://github.com/rails/webpacker/blob/5-x-stable/docs/engines.md

\n

教程和 github 文档内容非常丰富,但我无法让我的主机应用程序包含来自引擎的 javascript。我已在本地克隆了教程中的存储库(saddlebag 是引擎的存储库,saddlebag-dummy 是主机应用程序):

\n

https://github.com/bvandgrift/saddlebag

\n

https://github.com/bvandgrift/saddlebag-dummy

\n

我所做的唯一修改是更新 mimemagic gem,因为该 gem 的指定版本已从 gem 源中提取。

\n
-    mimemagic (0.3.5)\n+    mimemagic (0.3.10)\n+      nokogiri (~> 1)\n+      rake\n
Run Code Online (Sandbox Code Playgroud)\n

当我rails webpacker:compile在主机应用程序目录中运行时,它会生成以下内容:

\n
Hash: 10b1522b0b9c4b8aca2d\nVersion: webpack 4.44.1\nTime: 966ms\nBuilt at: 05/03/2021 2:48:22 PM\n                                        Asset       Size  Chunks                         Chunk Names\n       js/application-cb05ac1ef9258bc6a611.js   52.7 KiB       0  [emitted] [immutable]  application\n    js/application-cb05ac1ef9258bc6a611.js.br   11.3 KiB          [emitted]\n    js/application-cb05ac1ef9258bc6a611.js.gz   12.8 KiB          [emitted]\n   js/application-cb05ac1ef9258bc6a611.js.map    145 KiB       0  [emitted] [dev] …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails webpack

6
推荐指数
1
解决办法
614
查看次数

Rails.application.routes.recognize_path无法识别POST路由

我正在使用Rails.application.routes.recognize_path将路径分解为其组件--:controller,:action,:id等.它似乎与GET路由一起正常工作,但是对于POST路由,它会变空.这是我的路线文件的相关部分:

resources :units do
  member do
    get :test_get
    post :test_post
  end
end
Run Code Online (Sandbox Code Playgroud)

以下是GET的recogn_path的输出:

Rails.application.routes.recognize_path '/units/1/test_get'
=> {:controller=>"units", :action=>"test_get", :id=>"1"}  
Run Code Online (Sandbox Code Playgroud)

这是POST的输出:

Rails.application.routes.recognize_path '/units/1/test_post'
ActionController::RoutingError: No route matches "/units/1/test_post"
Run Code Online (Sandbox Code Playgroud)

路线已定义 - 这是输出 rake routes

test_get_unit GET     /units/:id/test_get(.:format)  units#test_get
test_post_unit POST   /units/:id/test_post(.:format) units#test_post
Run Code Online (Sandbox Code Playgroud)

我的道路上缺少什么?我应该使用另一种方法吗?

ruby-on-rails

5
推荐指数
2
解决办法
3470
查看次数

使用 webpack 部署到 Heroku 时预编译资产时出错

我有一个项目最近升级到了 Rails 5.2,并且我正在使用 webpacker gem。我在尝试部署到 Heroku 时收到以下错误:

\n\n
...\nremote:        Webpacker is installed  \nremote:        Using /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/config/webpacker.yml file for setting up webpack paths\nremote:        Compiling\xe2\x80\xa6\nremote:        Compilation failed:\nremote:        /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:11:in `exec\': No such file or directory - /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/node_modules/.bin/webpack (Errno::ENOENT)\nremote:         from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:11:in `block in run\'\nremote:         from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:10:in `chdir\'\nremote:         from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:10:in `run\'\nremote:         from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/runner.rb:6:in `run\'\nremote:         from ./bin/webpack:15:in `<main>\'\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n

在本地,我的 \'node_modules\' 目录位于 .gitignore 中(我相信 webpacker 安装脚本之一将其放在那里)。

\n\n

我是否需要取消忽略node_modules,或者是否需要在配置文件中添加一些内容来告诉远程在哪里可以找到webpack?

\n\n

这是我的 package.json:

\n\n
{\n  "dependencies": {\n    "@rails/webpacker": "3.5.5",\n    "babel-preset-react": "^6.24.1",\n    "d3": "^5.7.0",\n    "jquery": "^3.3.1",\n    "prop-types": "^15.6.2",\n    "react": "^16.5.2",\n …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku webpack webpacker

5
推荐指数
1
解决办法
3680
查看次数

无法在 Rails 7 中使用 importmaps 导入自定义 JavaScript 文件

我正在尝试了解 Rails 7 并导入地图,并且正在关注 DHH 的本教程: https://www.youtube.com/watch?v =PtxZvFnL2i0

该视频已有大约一年的历史,基于 Rails 7 的 alpha 版本,但它在一定程度上是有效的。现在我正在努力弄清楚什么改变了或者什么需要改变。

我一直跟踪到 17:18,他将 Vue.js 添加到演示中。这是他第一次向应用程序添加自定义的 JS 文件,而不是导入库。在本教程中,他将以下行添加到 application.js 中:

import "comps/vue_components"
Run Code Online (Sandbox Code Playgroud)

该行在我的实现中失败,并出现以下 JS 错误:

未捕获的类型错误:无法解析模块说明符“comps/vue_components”。相对引用必须以“/”、“./”或“../”开头。

我尝试将该行更新为以下内容来解决该错误:

import "./comps/vue_components"
Run Code Online (Sandbox Code Playgroud)

但这只是默默地失败了。看起来它完全杀死了 javascript 的执行 - 如果我将 console.log 语句放入 application.js 中,只有当我省略或注释掉导入 vue 组件的行时,它才会在控制台中显示。

这是我的 config/importmap.rb 文件:

# Pin npm packages by running ./bin/importmap

pin "application", preload: true
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
pin_all_from "app/javascript/controllers", under: "controllers"

pin "trix" …
Run Code Online (Sandbox Code Playgroud)

javascript ruby-on-rails import-maps

5
推荐指数
1
解决办法
3306
查看次数