Rails资产管道在开发中连接application.css和js,但不在生产中

问题描述 投票:3回答:1

我们目前在生产服务器上使用assest管道来预编译单个CSS和JavaScript资产,但是不要将它们组合成单个文件,例如我们有以下配置:

config.assets.precompile += %w( *.js *css fonts/*)

我能够将CSS和JavaScript文件预编译到配置了生产设置的开发系统上的单个CSS和单个JS文件中。 但是,当我尝试在生产服务器上进行预编译时,我没有错误,只需清空application.js和application.css文件。

我已经做了很多阅读(包括这里的SO)和尝试不同的东西,但似乎没有什么似乎接近相关。 我很想听到任何指针或建议,因此生产application.css和application.js包含连接的文件内容。

提前致谢

以下是开发和生产配置的相关摘要:

应用程序/资产/样式表/ application.css.scss.erb

/* ...
*= require cssexample1
*= require cssexample2
*/

应用程序/资产/ JavaScript的/ application.js中

//= require jsexample1
//= require jsexample2

配置/ application.rb中

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end


module StudySoup
  class Application < Rails::Application


    # Enable the asset pipeline
    config.assets.enabled = true

    # Version of your assets, change this if you want to expire all your assets
    config.assets.version = '1.0'
  end
end

开发设置

这将按预期完全创建已编译的application.js和application.css

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
'RUBY_VERSION' in irb: 1.9.3
rails: 3.2.1
rake: 10.4.2

配置/环境/ development.rb

config.assets.debug = false

config.serve_static_files = true
config.assets.compress = true
config.assets.compile = true
config.assets.digest = true
config.assets.precompile += %w( *.js *css fonts/*)

编译:

rm -rf tmp/cache/*
RAILS_ENV=development bundle exec rake assets:clean assets:precompile

结果:

public / assets / manifest.yaml包含条目和public / assests / application.js和application.css(以及缓存清除副本)现在包含连接文件

生产设置

这会创建一个空的application.js和applciation.css :(

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
'RUBY_VERSION' in irb: 2.1.2
rails version: 3.2.1
rake, version 10.4.2

配置/环境/ production.rb

config.serve_static_assets = true
config.assets.compress = true
config.assets.compile = true
config.assets.digest = true
config.assets.precompile += %w( *.js *css fonts/*)

编译:

rm -rf tmp/cache/*
rake assets:clean assets:precompile

结果:

public / assets / manifest.yaml包含条目和public / assests / application.js和application.css(以及缓存破坏副本)存在但是为空(长度为0)

ruby-on-rails ruby-on-rails-3 configuration asset-pipeline
1个回答
0
投票

你可以试试这个:

RAILS_ENV=production bundle exec rake assets:precompile
© www.soinside.com 2019 - 2024. All rights reserved.