Rails没有提供静态文件

时间:2016-03-20 21:17:48

标签: ruby-on-rails ruby thin

我正在运行最新版本的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

在我的produ.rb中我有

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

我使用

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

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

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

这些文件中没有包含摘要,因此我认为它们不正确。尝试手动加载包含和不包含摘要的文件名都包括404也失败。我做错了什么?

1 个答案:

答案 0 :(得分:1)

将js文件放在app/assets/javascript

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

所有js和css文件都加载到application.html.erb的标头中,该标头会加载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文件中。