这对我来说已经有一段时间了,但我仍然无法弄清楚 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 就可以为您做这件事。

要解决这个问题,你必须这样做

  1. git rm -r public/assets/
  2. 在你的 .gitignore 文件中添加 public/assets/**
  3. git add .
  4. git commit -am "allow heroku auto assets 预编译"
  5. git push heroku master


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!