从 Rails 6.1.0 开始,我们可以使用 server
块在 Rails 服务器启动时自动启动服务器。这是使用 Railtie
而 not 使用 Foreman 等。 documentation 给出了每次启动 Rails 服务器时启动 webpack 服务器的例子,这正是我想要做的。这是它所说的:
在 Rails 服务器启动时运行另一个程序
<块引用>在开发中,必须在 Rails 服务器旁边运行另一个进程是很常见的。例如,您可能想要启动 Webpack 或 React 服务器。或者您可能需要像 Sidekiq 一样运行您的作业调度程序进程。这通常是通过打开一个新的 shell 并从这里运行程序来完成的。
<块引用>Rails 允许您指定在 Rails 服务器启动时将被调用的服务器块。这样,您的用户无需记住必须打开一个新的 shell 并运行另一个程序,从而减少对每个人的困惑。可以这样使用:
class MyRailtie < Rails::Railtie
server do
WebpackServer.start
end
end
我尝试向我的 config/application.rb
添加服务器块,如下所示:
module MyApp
class Application < Rails::Application
config.load_defaults 6.1
server do
WebpackServer.start
end
end
end
当我启动 Rails 服务器时,它给出了这个错误:uninitialized constant MyApp::Application::WebpackServer (NameError) Did you mean? Webpacker
所以,看起来我必须做点什么才能得到那个 WebpackServer 对象,但我不知道从哪里开始或要搜索什么。
仅供参考,我尝试用一个简单的 WebpackServer.start
替换 puts
行,它在我启动 Rails 服务器时显示。
任何朝正确方向的推动将不胜感激。 ?
更新: 如下更改 config/application.rb
实际上可以启动 webpack 开发服务器,但不会同时启动 Rails 服务器。
module MyApp
class Application < Rails::Application
config.load_defaults 6.1
server do
require "webpacker/dev_server_runner"
ENV["NODE_ENV"] ||= "development"
Webpacker::DevServerRunner.run(ARGV)
end
end
end
运行 bin/rails server
会导致:
=> Booting Puma
=> Rails 6.1.4 application starting in development
=> Run `bin/rails server --help` for more startup options
ℹ 「wds」: Project is running at http://localhost:3035/
ℹ 「wds」: webpack output is served from /packs/
ℹ 「wds」: Content not from webpack is served from /Users/fabiopapa/dev/my_app/public/packs
ℹ 「wds」: 404s will fallback to /index.html
ℹ 「wdm」: Hash: 2c4582b698f7df1fba46
Version: webpack 4.46.0
Time: 7920ms
Built at: 2021-07-07 11:22:05 a.m.
Asset Size Chunks Chunk Names
js/application-f540b89eef4da5f261cb.js 9.93 MiB application [emitted] [immutable] application
js/application-f540b89eef4da5f261cb.js.map 9.98 MiB application [emitted] [dev] application
js/vendors~actioncable-a9a439982dea30932847.chunk.js 35.5 KiB vendors~actioncable [emitted] [immutable] vendors~actioncable
js/vendors~actioncable-a9a439982dea30932847.chunk.js.map 32 KiB vendors~actioncable [emitted] [dev] vendors~actioncable
manifest.json 554 bytes [emitted]
ℹ 「wdm」: Compiled successfully.
但是 Rails 服务器没有启动,去 localhost:3000 也不行。