Rails 不提供静态文件

Rails not serving static files

我是 运行 Thin、Rails 和 Ruby 的最新版本。我的构建脚本的相关部分是:

export RAILS_ENV=production
export RAILS_SERVE_STATIC_FILES=true
# generate static assets
RAILS_ENV=production rake assets:precompile
# restart server
rails server thin -d

而在我的 production.rb 我有

config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

我使用

将这些文件包含在我的视图中
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>

这成功编译了我的资产并将它们移动到 /public/assets 文件夹。但是,这些资源中的 none 实际上是在加载页面时提供的。生成的HTML是

<link rel="stylesheet" media="all" href="/stylesheets/application.css" />
<script src="/javascripts/application.js"></script>

这些文件的文件名中没有包含摘要,所以我认为它们是不正确的。尝试手动加载包含和不包含其摘要的文件名都失败并返回 404。我做错了什么?

将js文件放在app/assets/javascript下。

将 css 个文件放在 app/assets/stylesheets 下。

您所有的 js 和 css 文件都加载到 application.html.erb 的 header 中,它加载了 application.cssapplication.js。这就是这两行代码的作用。

<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>

这两个文件,有一行require_tree .加载对应目录下的所有文件:

app/assets/javascript
app/assets/stylesheets

当我不使用 CDN 时,我通常只将 public 文件夹用于外部库。您需要将它们明确包含在 application.jsapplication.css 文件中。