部署 求助,Capistrano 部署到服务器上时 assets 文件不全

siyang1982 · August 28, 2013 · Last by siyang1982 replied at August 29, 2013 · 2596 hits

在本机rails s -e production时一切正常。 用 Capistrano deploy 到服务器上后,shared/assets 里文件总是不全,情况如下:

  1. vendor/assets/下的 js、css 文件没有被 compile。

  2. app/assets/下的文件编译后不全: application.js、application.css 有, 但是其他两个 layout 相关 css 只有一个有,另一个没有, 其余 layout 相关 js 文件都没有, gem 里的 assets 文件正常。

尝试了多种方法,还是不行。

用配置

task :precompile, roles: :web, except: {no_release: true} do
  from = source.next_revision(current_revision) if capture("[ -f #{File.join(current_path, 'REVISION')} ] || echo '1'").empty?
  if from.nil? || capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets app/assets lib/assets | wc -l").to_i > 0
    run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
  else
    logger.info "Skipping asset pre-compilation because there were no asset changes."
  end
end

运行后提示

** Skipping asset pre-compilation because there were no asset changes.

vendor 下目录结构: vendor ├── assets │   ├── images │   ├── javascripts │   │   ├── html5.js │   │   ├── jquery-1.10.2.js │   │   ├── jquery.easing-1.3.js │   │   ├── jquery.inview.js │   │   ├── magnific-popup.js │   │   └── skrollr.js │   └── stylesheets │   └── magnific-popup.css └── plugins

看 Ruby China 的配置,那种单独引入的 css, js 文件需要增加到 config.assets.precompile 里面

application.rb

module RubyChina
  class Application < Rails::Application
    ....
    config.assets.precompile += %w(application.css app.js topics.css topics.js window.css front.css cpanel.css
        users.css pages.css pages.js notes.css notes.js 
        mobile.css home.css)
  end
end
You need to Sign in before reply, if you don't have an account, please Sign up first.