ruby-on-rails - 如何在 Elastic Beanstalk 容器中提供 Rails 应用程序的 webpack Assets ?

标签 ruby-on-rails webpack ruby-on-rails-5 amazon-elastic-beanstalk

我正在使用 Rails5 应用程序并将其成功部署到 EB 容器。

但是 webpacked assets -- 服务于 public/packs直接,在生产环境返回404。

在目前的情况下,我设置了 RAILS_SKIP_ASSET_COMPILATION = false所以我每次都在部署应用程序之前预编译 Assets 。

我曾经使用heroku作为生产环境,当时一切正常。

这是我的 config/webpacker.yml :

source_path: app/frontend/javascripts
  source_entry_path: packs
  public_output_path: packs # public/packs/filename-[hash].js
  cache_path: tmp/cache/webpacker

  # Additional paths webpack should lookup modules
  # ['app/assets', 'engine/foo/app/assets']
  resolved_paths: []

  # Reload manifest.json on all requests so we reload latest compiled packs
  cache_manifest: false

  extensions:
    - .js
    - .sass
    - .scss
    - .css
    - .png
    - .svg
    - .gif
    - .jpeg
    - .jpg

我试过的...

我试图将 public_output_path 从包更改为 Assets 。但同样的错误仍然存​​在......

最佳答案

我也遇到了这个问题。我不确定您使用的是 Nginx 还是Passenger。但是如果它是 Nginx,你可能想要添加一个位置块到 /etc/nginx/conf.d/webapp_healthd.conf看起来像这样:

location /packs {
  alias /var/app/current/public/packs;
  gzip_static on;
  gzip on;
  expires max;
  add_header Cache-Control public;
}

然后运行 ​​sudo /etc/init.d/nginx restart .

这应该足以让它工作。但是你会想要创建一个 .ebextensions/使用这些自定义设置在您的项目中创建文件,这样它就不会被 Elastic Beanstalk 默认配置覆盖。

this post由 Maria Luisa Carrion D. 撰写,了解如何自动化 nginx 配置。

关于ruby-on-rails - 如何在 Elastic Beanstalk 容器中提供 Rails 应用程序的 webpack Assets ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49096067/

相关文章:

ruby-on-rails - 前缀或 URL 的一部分

javascript - 使用 id 刷新页面时 react-router-dom 错误

ruby-on-rails - 是否可以在数据库列中的字符串上设置最小长度,或者只能通过模型​​验证来完成?

c++ - 从 C++ 程序向 Rails 服务器发送数据的最佳方式

ruby-on-rails - Rails Bundle,gems 冲突,解决它的最佳方法

ruby-on-rails - searchkick - 具有多个属性的自动完成

javascript - Typescript w Webpack import Legacy javascript class_1.class 不是构造函数

node.js - 如何在 WebStorm 中调试 React Express Webpack 应用程序

javascript - 防止谷歌地图使用涡轮链接多次加载

ruby-on-rails - 为什么我在为 Rails 5 生成 jwt_blacklist 模型时出错?