这对我来说已经有一段时间了,但我仍然无法弄清楚 Assets 管道在 Rails 4 中是如何工作的。我终于学会了如何预编译 Assets ,但是在部署之后,我的 CSS样式表未更新。
我通过转到开发人员工具并查看源代码确认了这一点。它看起来与我的 CSS 文件不同。我猜问题出在我的 production.rb 文件中。
Production.rb
Games::Application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = true
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.digest = true
config.assets.version = '1.0'
config.log_level = :info
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
end
Application.rb
require File.expand_path('../boot', __FILE__)
require 'rails/all'
Bundler.require(*Rails.groups)
module Games
class Application < Rails::Application
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
config.exceptions_app = self.routes
end
end
这是我的带有助手的 Application.html.erb 文件。
<!DOCTYPE html>
<html>
<head>
<title><%= @title %></title>
<%= stylesheet_link_tag "application", media: "all",
"data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
<%= render 'layouts/footer' %>
</body>
</html>
gem 文件
gem 'rails', '4.0.4'
group :development, :test do
gem 'sqlite3', '1.3.8'
gem 'rspec-rails', '2.13.1'
end
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor'
end
group :test do
gem 'selenium-webdriver', '2.35.1'
gem 'capybara', '2.1.0'
end
gem 'sass-rails', '~> 4.0.2'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'sprockets-rails', '~> 2.0.0'
gem 'bootstrap-sass', '2.3.2.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
这是我采取的步骤
heroku run rake assets:precompile RAILS_ENV=production
git add .
git commit
git push heroku master
现在,也许我错了,但是已经运行了 git add 。 (意思是添加所有文件)它也应该加载最新的样式表。但是,Heroku 似乎又一次失败了。
这件事以前发生过,而且越来越烦人,所以我想找到一个解释。
感谢您的宝贵时间。
编辑:
我想我现在知道问题出在哪里了。我的样式表永远不会更新到我的 public/assets 文件夹中。我不知道我该怎么做才能让它们出现在那里。
请您参考如下方法:
看起来您已经在 git 存储库中添加了 Assets 预编译文件。理想情况下,它不应该存在,因为只要您push
它,heroku 就可以为您做这件事。
要解决这个问题,你必须这样做
git rm -r public/assets/
- 在你的
.gitignore
文件中添加public/assets/**
git add .
git commit -am "allow heroku auto assets 预编译"
git push heroku master