我正在运行最新版本的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也失败。我做错了什么?
答案 0 :(得分:1)
将js文件放在app/assets/javascript
。
将css文件放在app/assets/stylesheets
下。
所有js和css文件都加载到application.html.erb
的标头中,该标头会加载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
文件中。