Rails 服务器启动时如何使用 Railtie 启动 Webpack 服务器?

时间:2021-07-07 17:13:51

标签: ruby-on-rails

Rails 6.1.0 开始,我们可以使用 server 块在 Rails 服务器启动时自动启动服务器。这是使用 Railtienot 使用 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 也不行。

0 个答案:

没有答案
相关问题