我正在尝试将我的应用程序投入生产,图像和css资产路径无法正常工作.
这是我目前正在做的事情:
<%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>RAILS_ENV=production bundle exec rake assets:precompile并且它成功了,我在public/assets目录中看到了指纹文件.当我浏览到我的网站时,我收到404找不到错误mysite.com/stylesheets/styles.css.
我究竟做错了什么?
更新: 在我的布局中,它看起来像这样:
<%= stylesheet_link_tag "bootstrap.min", media: "all", "data-turbolinks-track" => true %>
<%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
Run Code Online (Sandbox Code Playgroud)
生成源是这样的:
<link data-turbolinks-track="true" href="/stylesheets/bootstrap.min.css" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/stylesheets/styles.css" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/assets/application-0c647c942c6eff10ad92f1f2b0c64efe.js"></script>
Run Code Online (Sandbox Code Playgroud)
看起来Rails没有正确地查找已编译的css文件.但是为什么它适用于javascripts(注意/assets/****.js路径)是非常令人困惑的.
我刚刚为新的Rails 3.1应用程序进行了第一次部署,但资产似乎无法正常工作.我在部署时预编译了所有内容,它会public/assets像预期的那样出现.但是,例如stylesheet_link_tag "application"在我的布局中的输出有一个href指向/stylesheets/application.css.这显然不起作用.
奇怪的是,在开发模式下,一切似乎都很好,它/assets/application.css与预期相似.
我将我config/application.rb和config/environments/production.rb文件与我们在资产管道上的另一个应用程序进行了比较,相关设置似乎是相同的.
我应该在哪里看?
刚刚开始适应rails 3.1,我开始编写coffeescript和sass,一切都在开发中运行良好.当我在生产中运行服务器时,我只得到:
<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/javascripts/application.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
在页面的源代码中,没有生成哈希码,并且两个资产都有路由错误:
Routing Error
No route matches [GET] "/stylesheets/application.css"
Run Code Online (Sandbox Code Playgroud)
这是什么原因?我忘记做某事吗?
环境/ production.rb中的设置:
# Settings specified here will take precedence over those in config/application.rb
# Code is not reloaded between requests
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Compress JavaScripts and …Run Code Online (Sandbox Code Playgroud)