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.css
和 application.js
。这就是这两行代码的作用。
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>
这两个文件,有一行require_tree .
加载对应目录下的所有文件:
app/assets/javascript
app/assets/stylesheets
当我不使用 CDN 时,我通常只将 public
文件夹用于外部库。您需要将它们明确包含在 application.js
和 application.css
文件中。
我是 运行 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.css
和 application.js
。这就是这两行代码的作用。
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>
这两个文件,有一行require_tree .
加载对应目录下的所有文件:
app/assets/javascript
app/assets/stylesheets
当我不使用 CDN 时,我通常只将 public
文件夹用于外部库。您需要将它们明确包含在 application.js
和 application.css
文件中。