Rails 6未提供静态文件服务

3

我刚刚将一个Rails 5.1项目升级到Rails 6,并最终成功渲染视图。但是,我仍然无法让Puma(4.3.3)从public/文件夹中提供静态文件。由于设置Webpack太难了,我选择使用Sprockets 4.0。我收到了以下错误:

Sprockets::Rails::Helper::AssetNotFound - The asset "intro_video.mp4" is not present in the asset pipeline.:
  app/views/home/_intro_video.html.haml:1
  app/views/home/index.html.haml:52

Started POST "/__better_errors/82e7c6297114c48a/variables" for 127.0.0.1 at 2020-04-02 09:05:05 -0400

我在开发环境中添加了config.serve_static_assets = true到我的config/environments/development.rb文件中,并重新启动了服务器。相关页面链接到根目录下的“intro_video.mp4”,该文件存储在public/文件夹中。如果我直接在Firefox中输入localhost:3000/intro_video.mp4,会出现ActionController::RoutingError: No route matches [GET] \"/intro_video.mp4\"错误提示。
感谢任何帮助。谢谢。
编辑:我尝试将intro_video.mp4文件移动到app/assets/images目录中,但现在我遇到了这个奇怪的问题:

SassC :: SyntaxError位于 /

错误:未定义变量:“$ light-gray”。           在datepicker.scss的第15行10处      color:$ light-gray;

这意味着我的application.scss文件中的@import 'variables'不能工作,但其中引用的所有其他文件都可以。实际上,如果我将任何文件添加到app/assets/images目录中,都会出现这种情况。这对我来说毫无意义...
再次编辑:所以我通过从app/assets/config/manifest.js中删除这个来解决CSS问题。
//= link_directory ../stylesheets .css

...影响我的样式表的加载顺序 仍然无法从public/目录中获得任何内容,所以我将把所有东西都移动到app/assets/images

1个回答

1
对于Rails 6,以下应该可以工作:

# config/environments/production.rb
config.public_file_server.enabled = true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接